1、anyMatch
判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。
接口定义:
boolean anyMatch(Predicate<? super T> predicate);
方法描述:
在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 Predicate<T> 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。这里anyMatch表示,判断的条件里,任意一个元素符合条件,就返回true值。
使用场景:
两个集合的交集
@Test
public void a17() {
List<User> list = new ArrayList<>();
list.add(new User("张三", 12, "南京"));
list.add(new User("李四", 13, "北京"));
list.add(new User("王五", 14, "苏州"));
list.add(new User("王五", 17, "苏州"));
List<User> userList = new ArrayList<>();
userList.add(new User("李四", 13, "北京"));
userList.add(new User("王五", 20, "广州"));
// 获取两个集合中有相同名字或者年龄相同的,只要满足其中一个条件即可,只会返回list集合里面的元素,有先后顺序返回
List<User> users1 = list.stream()
.filter(a -> userList.stream().anyMatch(b -> a.getName().equals(b.getName()) || a.getAge() == b.getAge()))
.collect(Collectors.toList());
// 获取两个集合中相同名字并且年龄相同的,必须同时满足两个条件
List<User> users2 = list.stream()
.filter(a -> userList.stream().anyMatch(b -> a.getName().equals(b.getName()) && a.getAge() == b.getAge()))
.collect