怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
第一种: 不使用java8
privateList<UserCar>removeDupliByRecordId(List<UserCar>userCars){
Set<UserCar>personSet=newTreeSet<UserCar>((o1,o2)->o1.getRecordId().compareTo(o2.getRecordId()));
personSet.addAll(userCars);
returnnewArrayList<UserCar>(personSet);
}
这也是大多数人第一想到的,借助 TreeSet 去重,其中 TreeSet 的其中一个构造函数接收一个排序的算法,同时这也会用到 TreeSet 的去重策略上.
publicTreeSet(Comparator<?superE>comparator){
this(newTreeMap<>(comparator));
}
第二种: 炫酷的java8写法
List<Person>unique=persons.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(Person::getName))),ArrayList::new)
);
unique.forEach(p->System.out.println(p));
第三种: 炫酷的java8写法
List<String>names=newArrayList<>();//用来临时存储person的id
List<Person>personList=persons.stream().filter(//过滤去重
v->{
booleanflag=!names.contains(v.getName());
names.add(v.getName());
returnflag;
}
).collect(Collectors.toList());
java8根据某一属性过滤去重
//根据id去重
examRoomModelLists=examRoomModelLists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
//利用TreeSet的排序去重构造函数来达到去重元素的目的
//根据firstName去重
()->newTreeSet<>(Comparator.comparing(ExamRoomModel::getId))),ArrayList::new));
java8过滤StudentExamState=0的数据
em.setNoLoginExamineeCount((examinee.stream().map(ExamineeEntity::getStudentExamState).filter(x->
x==0).collect(Collectors.toList())).size());
}
java8过滤ExamRoomStudentCount=0的数据
List<ExamRoomModel>filterList=examRoomModelLists.stream().filter(ExamRoomModel->
!Objects.equals(ExamRoomModel.getExamRoomStudentCount(),0)).collect(Collectors.toList());
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。