面试题答案
一键面试以下是使用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的元素并平方的调用。