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