准备需要去重处理的对象的集合:
List<User> userList = new ArrayList<>();
userList.add(new User(1L, "a"));
userList.add(new User(2L, "b"));
userList.add(new User(2L, "c"));
1. 方法一(最简便)
使用 TreeSet 去重,初始化 TreeSet 时指定排序规则,不用改动实体类。
TreeSet<User> set1 = new TreeSet<>(Comparator.comparing(User::getId));
set1.addAll(userList);
System.out.println("set1 = " + set1);
2. 方法二
使用 TreeSet 去重,实体类需要实现 Comparable 接口并重写 compareTo 方法,否则运行时报 ClassCastException。
TreeSet<User> set2 = new TreeSet<>(userList);
System.out.println("set2 = " + set2);
3. 方法三
使用 HashSet 去重,实体类需要重写 equals 和 hashCode 方法。
HashSet<User> set3 = new HashSet<>(userList);
System.out.println("set3 = " + set3);