【Java8 中list对象中对象的多属性去重】
直接上代码:
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
User u1 = new User();
u1.setUserName("1");
u1.setPassWord("123");
User u2 = new User();
u2.setUserName("2");
u2.setPassWord("123");
User u3 = new User();
u3.setUserName("1");
u3.setPassWord("456");
list.add(u1);
list.add(u2);
list.add(u3);
List<User> result = list.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<User>(Comparator.comparing(p -> p.getUserName()))),ArrayList::new));
for (User u : result) {
System.out.println(u.getUserName() + " " + u.getPassWord());
}
}
如果是一个对象多个属性这样写:分号分隔
List<User> result = list.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<User>(Comparator.comparing(p -> p.getUserName()+";"+p.getPassWord()))),ArrayList::new));