前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
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. 运行结果: