在Java中,Predicate是一个函数式接口,它接受一个参数并返回一个布尔值。你可以使用Lambda表达式或方法引用来创建自定义的Predicate。以下是一些示例,展示了如何使用自定义匹配。
首先,导入所需的包:
import java.util.function.Predicate;
假设我们有一个Person类,我们想要根据年龄来匹配Person对象:
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
}
现在,我们可以创建一个自定义的Predicate来匹配年龄大于等于18的Person对象:
Predicate<Person> isAdult = person -> person.getAge() >= 18;
我们可以将上面的Lambda表达式替换为方法引用:
boolean isAdult(Person person) {
return person.getAge() >= 18;
}
Predicate<Person> isAdult = Person::isAdult;
你可以使用and()、or()和negate()方法来组合多个Predicate:
Predicate<Person> isAdult = person -> person.getAge() >= 18;
Predicate<Person> isNamedJohn = person -> "John".equals(person.name);
// 组合两个Predicate
Predicate<Person> isAdultAndNamedJohn = isAdult.and(isNamedJohn);
// 使用or()方法
Predicate<Person> isAdultOrNamedJohn = isAdult.or(isNamedJohn);
// 使用negate()方法
Predicate<Person> isNotAdult = isAdult.negate();
我们可以使用filter()方法在集合中应用自定义Predicate:
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Jane", 17),
new Person("Doe", 30)
);
List<Person> adults = people.stream()
.filter(isAdult)
.collect(Collectors.toList());
System.out.println(adults); // 输出:[Person{name='John', age=25}, Person{name='Doe', age=30}]
这些示例展示了如何在Java中创建和使用自定义的Predicate。你可以根据需要调整它们以满足你的需求。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。