简介
经常我们都会对List集合中的元素进行操作,并且List集合允许存储相同的值,不像Map会对重复元素进行覆盖,可能我们会使用for循环进行遍历集合在判断元素是否相等,我们我们可以使用集合中的stream流中的filter过滤
相等的值
演示
实体类:
//使用插件后可以不创建toString/set/get方法
@Data
class People{
//姓名
String name;
//地址
String addres;
//年龄
Integer age;
}
main方法:
创建peopleList集合,并且存入对象1号
,对象2号
.并且现在需求是需要对peopleList 集合中
对 某个属性进行判断是否存在
.创建需要验证的对象,
public static void main(String[] args) {
List<People> peopleList=new ArrayList<>();
//对象1号
People people=new People();
people.setName("itmei");
people.setAge(18);
people.setAddres("福建");
peopleList.add(people);
//对象2号
People people2=new People();
people2.setName("小东东");
people2.setAge(10);
people2.setAddres("北京");
peopleList.add(people2);
//需要对peopleList 集合中对 某个属性进行判断是否存在 ,
//判断现有的name是否存在集合中,如果不存在就添加,反之就添加到集合中
//验证的对象
People verifyPeople=new People();
verifyPeople.setName("itmei");
verifyPeople.setAddres("mmm");
//核心代码
boolean flag=peopleList.stream().filter(item->{
//判断现有的name是否存在集合中
return item.getName().equals(verifyPeople.getName());
}).findAny().isPresent();
//对返回结果进行逻辑处理
if (flag){
System.out.println("已存在");
}else {
System.out.println("不存在,则添加");
peopleList.add(verifyPeople);
}
System.out.println("集合中的元素"+peopleList.toString());
}
结果
现在修改下验证对象的name
值为itmei小小
结果:
可以看出因为集合中的name没有重复所以允许添加到peopleList
集合中