集合去重 (集合元素为引用类型)--- java 8 新特性 --- 根据元素单属性、多属性实现去重
生活随笔
收集整理的這篇文章主要介紹了
集合去重 (集合元素为引用类型)--- java 8 新特性 --- 根据元素单属性、多属性实现去重
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
1. 代碼寫法: (要求 JDK 1.8 或 1.8 以上)
package gentle.entity;import lombok.Data; /**** @author silence* @date 2018/7/6 10:58*/ @Data // 此注解可自動生成set/get、自動重寫equals/hashcode 等,不用在代碼中書寫相關代碼。public class User {private String name;private int age;public User( String name, int age) {this.name = name;this.age = age;} } /*** for循環* @param list* @param <T>*/public static <T> void listFor(List<T> list) {list.forEach(each -> System.out.print(each+" "));}/*** 按對象屬性去重** @return*/public static List<User> deleteSameByOne(List<User> users) {// 1.單個屬性去重return users.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getAge))),ArrayList::new));}/*** 按對象屬性去重** @return*/public static List<User> deleteSameByMany(List<User> users) {// 2.多屬性去重:把多個屬性拼起來( 本質上還是單屬性去重 )return users.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(userDep -> userDep.getName() + userDep.getAge()))),ArrayList::new));}/*** 基本數據類型去重** @param list* @param <T>* @return*/public static <T> List<T> deleteSame(List<T> list) {return list.stream().distinct().collect(Collectors.toList());}2. 測試:
List<User> userList = new ArrayList<User>(){{add(new User("花間",24));}{add(new User("暮云",28));}{add(new User("暮云",28));}{add(new User("徹風",24));}{add(new User("彌禁",16));}{add(new User("清寞",24));}};System.out.println("去掉同齡的:\n"+deleteSameByOne(userList));System.out.println("去掉同齡且同名的:\n"+deleteSameByMany(userList));3. 運行結果:
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的集合去重 (集合元素为引用类型)--- java 8 新特性 --- 根据元素单属性、多属性实现去重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery 实现表格与 ckeckbo
- 下一篇: 2020.3