在 Java 中使用预定义的 lambda 作为参数

Kol*_*vis -2 java lambda java-stream

所以我试图通过这个测试:

public void testCountWithCondition() {
        List<Integer> data = Arrays.asList(1, 3, 8, 4, 6);
        int count = streamer.count(data, x -> x % 3 == 0);
        assertEquals(2, count);
    }
Run Code Online (Sandbox Code Playgroud)

我很难理解如何创建一个count可以将 lambda 表达式作为参数的方法。我看过其他帖子说您需要创建一个接口类,但是如何对其进行编程才能接受任何 lambda 表达式?另外,作业特别指出我需要使用流。谢谢!

Sha*_*her 5

你的方法应该接受一个Predicate。所有采用一个参数并返回布尔值的 lambda 都实现该接口。调用谓词是通过执行其test()方法来完成的。

例子:

public <T> long count(Collection<T> collection, Predicate<T> filter) {
    return collection.stream()
            .filter(filter)
            .count();
}
Run Code Online (Sandbox Code Playgroud)