jdk8根據某一屬性去重方法 Collectors.collectingAndThen


userList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User :: getUserid))), ArrayList::new));

 1、TreeSet是基於TreeMap實現的一個有序的,元素不可重復的集合;

有序的實現方式有兩種:

(1)對於被排序的實體類實現java.lang.comparable接口重寫compareTo方法

(2)提供一個比較器Comparator給TreeSet (可通過定義一個比較器類 或者 匿名內部類  或者jdk8的Comparator.comparing)

 

2、TreeSet對於重復元素的保留方式是留下先add的,拋棄后add的

 

3、Collectors.collectingAndThen方法是先進行collecting操作,最后再執行then操作

 

上面的根據元素屬性去重方法是:

1.將list存為TreeSet,並使用Comparator.comparing指定比較的元素為某個屬性。

2.將不重復的TreeSet集合轉回List


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM