Stream filter中自定义谓词变量

发布时间 2023-10-21 11:05:56作者: Kllin

在流式处理中,filter 操作是用于筛选符合条件的元素并生成一个新的流。谓词(Predicate)是一个表示条件的函数式接口,用于定义筛选的条件。

在 Java 中,Stream API 提供了 filter 方法来执行筛选操作。filter 方法接受一个谓词作为参数,该谓词描述了筛选的条件。

谓词的函数式接口定义如下:

public interface Predicate<T> {
    boolean test(T t);
}

其中 T 是流中元素的类型,test 方法接受一个参数并返回一个布尔值,用于判断该元素是否满足筛选条件。

使用 filter 方法和谓词可以实现根据条件筛选流中的元素,例如:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> evenNumbers = numbers.stream()
                                   .filter(n -> n % 2 == 0)
                                   .collect(Collectors.toList());

System.out.println(evenNumbers); // 输出 [2, 4]

其中的谓词可以声明成一个变量,在有需要的地方复用该谓词

public static Predicate<Integer> PREDICATE = n -> n % 2 == 0;