List<Object>对象链表去重

collectors tocollection treeset Comparator

info = info.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>
                    (Comparator.comparing(Object::getParam1))),ArrayList::new));

第一种方法的finisher调用的是ArrayList(Collection<? extends E> c),所以就是把Collector<T,A,R> downstream的结果再给到Function<R,RR> finisher去处理,用toCollection收集结果
第二种用treeSet就是用比较器来进行排序去重,如果compareTo返回0,说明是重复的,返回的是自己的某个属性和另一个对象的某个属性的差值,如果是负数,则往前面排,如果是正数,往后面排。在set放元素时,是一个循环比较的过程,一旦有一个相等,就不再比较。
ComparTo()方法是一个比较方法,比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。默认为零系统认为都是同一个对象,所以只存入一个,因为Set集合的无序、唯一性。

参考原文链接:https://blog.csdn.net/xhchen971028/article/details/115481529

  1. 使用stream()流式方法处理链表;
  2. 再使用collect进行收口:
    1. 使用Comparator创建比较器进行指定对象中元素比较列表中每一项,Comparator通常用于创建简单排序,重写Comparable接口中的Compareto方法;
      参考链接:https://blog.csdn.net/xiaofei__/article/details/53138681
    2. 创建TreeSet基于红黑树的Set,结合Comparator来进行排序去重;
      参考链接:https://blog.csdn.net/qq_21484461/article/details/132841982
    3. 最后再将其转换为ArrayList进行收集。
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值