java中util类的filter
时间: 2024-02-17 15:59:50 浏览: 21
Java 中的 `java.util` 包提供了一个 `Filter` 接口和一个 `filter()` 方法,用于对集合进行过滤操作。
`Filter` 接口定义如下:
```java
public interface Filter<T> {
boolean apply(T t);
}
```
其中,`T` 表示要过滤的对象的类型。该接口只有一个方法 `apply(T t)`,用于判断给定的对象是否符合过滤条件。
在 `java.util` 包中的类中,例如 `List`、`Set`、`Map` 等,都提供了一个 `filter()` 方法用于过滤集合中的元素。该方法的定义如下:
```java
default Stream<T> filter(Predicate<? super T> predicate)
```
其中,`Predicate` 是一个函数式接口,用于判断给定的对象是否符合过滤条件,定义如下:
```java
public interface Predicate<T> {
boolean test(T t);
}
```
`filter()` 方法接受一个 `Predicate` 参数,用于对集合中的元素进行过滤,返回一个新的 `Stream` 对象,其中包含符合过滤条件的元素。
例如,对于 `List` 集合,可以使用 `filter()` 方法过滤出所有大于 10 的元素:
```java
List<Integer> list = new ArrayList<>();
list.add(5);
list.add(15);
list.add(20);
List<Integer> result = list.stream().filter(i -> i > 10).collect(Collectors.toList());
```
在上面的例子中,使用 `stream()` 方法将 `List` 转换为 `Stream`,然后使用 `filter()` 方法过滤出所有大于 10 的元素,最后使用 `collect()` 方法将过滤后的元素收集到一个新的 `List` 中。