根据对象的属性,对存储在list中的对象进行去重
直接上例子:
实体类:
public class User {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String id, String name) {
super();
this.id = id;
this.name = name;
}
}
public class Demo {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
User u1 = new User("a", "aaa");
User u2 = new User("a", "aaa");
User u3 = new User("b", "aaa");
User u4 = new User("a", "b");
User u5 = new User("b", "a");
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
List<User> unique=list.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(
()->new TreeSet<>((o1,o2)->{
if (o1.getName().compareTo(o2.getName()) == 0) {
return 0;
} else {
return o1.getName().compareTo(o2.getName());
}
}))
, ArrayList::new)
);
System.out.println("根据对象属性name进行去重");
System.out.println("---------- 去重前----------");
System.out.println("集合中元素的个数为:"+list.size());
for (User user : list) {
System.out.println(user.toString()+"--姓名:"+user.getName());
}
System.out.println("-----------去重后----------");
System.out.println("集合中元素的个数为:"+unique.size());
for (User user : unique) {
System.out.println(user.toString()+"--姓名:"+user.getName());
}
}
}