Predicate<T>
时间: 2024-05-13 07:14:25 浏览: 39
Predicate<T> 是 Java 8 中的一个函数接口,它接受一个泛型类型 T 的参数,并返回一个 boolean 值。通常用于对某个集合或数组中的元素进行筛选或过滤,判断是否符合某个条件。例如:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Predicate<Integer> isEven = num -> num % 2 == 0;
List<Integer> evenNumbers = numbers.stream()
.filter(isEven)
.collect(Collectors.toList());
```
上述代码中,我们定义了一个 Predicate<Integer> 类型的 isEven,用于判断一个整数是否是偶数。然后我们使用 Stream API 的 filter 方法,将 numbers 集合中所有偶数筛选出来,最终得到一个只包含偶数的集合 evenNumbers。
相关问题
3.编写一个泛型方法,用于对一个 List 中的元素进行过滤,只保留满足指定条件的元素。 public static <T> List<T> filter(List<T> list, Predicate<T> predicate) ;
可以使用 Java 8 的 Stream API 来实现这个泛型方法,代码如下:
public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
return list.stream().filter(predicate).collect(Collectors.toList());
}
这个方法接受一个 List 和一个 Predicate,返回一个新的 List,其中只包含满足 Predicate 条件的元素。使用 Stream API 的 filter 方法可以很方便地实现这个功能。
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }用法
这是 Java 8 中的一个函数式接口 `Predicate<T>`,它接受一个泛型参数 `T`,并定义了一个抽象方法 `test(T t)`,该方法接受一个 `T` 类型的参数,并返回一个 `boolean` 类型的结果。该接口通常用于判断某个对象是否符合某个条件,常见的例子包括过滤集合中的元素、筛选符合要求的文件等。
例如,可以使用 `Predicate` 接口过滤集合中的偶数元素:
```java
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
Predicate<Integer> evenPredicate = n -> n % 2 == 0;
List<Integer> evenList = list.stream().filter(evenPredicate).collect(Collectors.toList());
```
上述代码中,`evenPredicate` 是一个 `Predicate` 对象,它定义了一个判断整数是否为偶数的条件,然后使用 `filter` 方法过滤集合中符合条件的元素,最后将结果收集到一个新的集合 `evenList` 中。
需要注意的是,`Predicate` 接口是一个函数式接口,因此可以使用 lambda 表达式或方法引用来创建该接口的实例。
阅读全文