MST

星途 面试题库

面试题:Kotlin 函数式编程的高阶函数应用

实现一个高阶函数,该函数接收两个参数,一个是Int类型的集合,另一个是一个函数类型参数,该函数类型参数接收一个Int并返回一个Boolean。高阶函数需要根据传入的函数对集合进行过滤,然后对过滤后的集合元素进行平方操作并返回新的集合。请写出该高阶函数的代码,并举例调用该高阶函数,筛选出大于3的元素并平方。
45.7万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

以下是使用Kotlin实现的代码:

fun higherOrderFunction(intList: List<Int>, filterFunction: (Int) -> Boolean): List<Int> {
    return intList.filter(filterFunction).map { it * it }
}

fun main() {
    val ints = listOf(1, 2, 3, 4, 5)
    val result = higherOrderFunction(ints) { it > 3 }
    println(result)
}

上述代码中,higherOrderFunction为定义的高阶函数,接收Int类型集合intList和过滤函数filterFunction,先过滤集合,再对过滤后的元素平方并返回新集合。在main函数中进行调用,筛选出大于3的元素并平方。

如果是Java 8及以上版本,代码如下:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class HigherOrderFunction {
    public static List<Integer> higherOrderFunction(List<Integer> intList, java.util.function.Predicate<Integer> filterFunction) {
        return intList.stream()
                       .filter(filterFunction)
                       .map(i -> i * i)
                       .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> result = higherOrderFunction(ints, i -> i > 3);
        System.out.println(result);
    }
}

此Java代码实现了类似功能,higherOrderFunction接收List<Integer>Predicate<Integer>,使用流操作进行过滤和平方。main方法演示了筛选大于3的元素并平方的调用。