前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
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. 運行結果:
?