Java Stream流中的filter()使用方法-详解

filter() 是 Java Stream API 中的一个中间操作,用于根据给定的条件筛选流中的元素。它接收一个 Predicate(断言,即返回 boolean 的函数)作为参数,筛选出满足条件的元素,并将它们收集到一个新的流中。

1. 基本用法

filter() 允许你基于某些条件筛选流中的元素。例如,如果你有一个整数流,并且只想保留其中的偶数,可以使用 filter() 来实现:

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

List<Integer> evenNumbers = numbers.stream()
    .filter(n -> n % 2 == 0)  // 保留偶数
    .collect(Collectors.toList());  // 终端操作,将结果收集为 List

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

在这个例子中:

  • filter(n -> n % 2 == 0):是一个筛选条件,用于保留那些能被 2 整除的数字,即偶数。
  • filter() 会遍历流中的每个元素,使用该条件进行检查,满足条件的元素会继续留在流中,不满足条件的元素会被丢弃。

2. Predicate 函数

filter() 的参数是一个 Predicate 接口,这个接口只有一个抽象方法 boolean test(T t),它接收一个输入并返回一个 boolean 值。这个 Predicate 用来定义筛选条件。

示例:筛选大于 3 的数字
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

List<Integer> greaterThanThree = numbers.stream()
    .filter(n -> n > 3)  // 保留大于 3 的数字
    .collect(Collectors.toList());

System.out.println(greaterThanThree);  // 输出: [4, 5]

在这个例子中,n -> n > 3 是一个 Predicate,它表示筛选出大于 3 的数字。filter()

你可能感兴趣的:(java)