怎么在java8项目中对List对象属性去重

怎么在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 的去重策略上.

怎么在java8项目中对List对象属性去重

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());

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。

发布于 2021-03-17 20:55:36
收藏
分享
海报
0 条评论
167
上一篇:使用vb怎么监控电脑的活动记录 下一篇:怎么在R语言中对字符串进行拼接
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码