Predicate 的test方法
时间: 2024-10-27 11:03:32 浏览: 21
在Java 8及更高版本中,`Predicate` 是一种函数式接口,用于描述一个测试,通常是对集合中的对象是否满足特定条件的测试。`Predicate<T>` 类型的一个实例有一个 `test(T t)` 方法,该方法接收一个类型为 `T` 的参数,并返回一个布尔值,表示传入的对象 `t` 是否满足该 `Predicate` 定义的条件。
例如,假设我们有一个 `Person` 对象列表,我们想要创建一个 `Predicate<Person>` 来找出所有年龄大于 18 的人,可以这样做:
```java
public class Person {
private int age;
// getters and setters...
public boolean isOldEnough() {
return age > 18;
}
}
Predicate<Person> predicate = person -> person.isOldEnough();
boolean hasAdults = persons.stream().filter(predicate).anyMatch();
```
这里,`person -> person.isOldEnough()` 是一个 lambda 表达式,它作为 `Predicate<Person>` 的实例,`test(Person person)` 方法会调用 `person.isOldEnough()` 函数来检查年龄是否大于18。`persons.stream().filter(predicate).anyMatch();` 这一行则使用 `filter` 和 `anyMatch` 方法筛选出年龄大于18的人。
`test` 方法对于处理复杂条件非常有用,因为它允许我们在不改变原有数据结构的情况下,动态地根据需要筛选数据。
阅读全文