java8实现List中对象属性的去重方法

网友投稿 465 2023-01-26

java8实现List中对象属性的去重方法

java8的stream流能完美解对象集合去重问题.

List list1 = new ArrayList();

UserCar userCar = new UserCar();

userCar.setId(1);

userCar.setCarNo("AA");

list1.add(userCar);

UserCar userCar1 = new UserCar();

userCar1.setId(2);

userCar1.setCarNo("AA");

list1.add(userCar1);

Person p1 = nhttp://ew Person(1, "11");

Person p2 = new Person(1, "22");

Person p3 = new Person(2, "11");

List persons = Arrays.asList(p1, p2, p3);

第一种: 不使用java8

private List removeDupliByRecordId(List userCars) {

Set personSet = new TreeSet((o1, o2) ->o1.getRecordId().compareTo(o2.getRecordId()));

personSet.addAll(userCars);

return new ArrayList(personSet);

}

这也是大多数人第一想到的,借助 TreeSet 去重,其http://中 TreeSet 的其中一个构造函数接收一个排序的算法,同时这也会用到 TreeSet 的去重策略上.

public TreeSet(Comparator comparator) {

this(new TreeMap<>(comparator));

}

第二种: 炫酷的java8写法

List unique = persons.stream().collect(

Collectors.collectingAndThen(

Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)

);

unique.forEach(p -> System.out.println(p));

第三种: 炫酷的java8写法

List();//用来临时存储person的id

List personList = persons.stream().filter(// 过滤去重

v -> {

boolean flag = !names.contains(v.getName());

names.add(v.getName());

return flag;

}

).collect(Collectors.toList());

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:免费api调用平台(免费接口调用平台)
下一篇:智能插座开放api接口(开源智能插座)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~