Predicate<? super E> filter 创建举例
时间: 2024-10-13 16:11:05 浏览: 25
`Predicate<? super E>` 是Java 8引入的一种函数式接口,用于对集合或其他数据源中的元素进行过滤操作。这个接口只有一个抽象方法 `test(E)`,接受一个类型的输入参数 `E` 并返回一个布尔值,表示该元素是否满足特定条件。`super E` 表示泛型通配符,意味着它可以匹配 `E` 或者 `E` 的任意超类。
例如,如果你有一个整数列表 `List<Integer>`,你可以使用 `Predicate` 来创建一个只包含偶数的过滤器:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
// 使用 Predicate 创建一个过滤偶数的条件
Predicate<Integer> isEven = number -> number % 2 == 0;
// 使用 filter 方法应用这个过滤器到 numbers 列表上
List<Integer> evenNumbers = numbers.stream()
.filter(isEven)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出 [2, 4, 6]
}
}
```
在这个例子中,`isEven` 就是一个 `Predicate<? super Integer>` 实例,它过滤出列表中的偶数部分。
阅读全文