认为只有两个对象的name和desc两个属性值分别相同情况下才认为对象相同。
根据此条件进行去重操作。
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);
for (User user : list) {
System.out.println(user.toString());
}
System.out.println("---------------------");
list = listUser(list);
for (User user : list) {
System.out.println(user.toString());
}
}
public static List<User> listUser(List<User> list) {
Set<User> set = new TreeSet<User>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
//compareTo,,大于0表示前一个数据比后一个数据大, 0表示相等,小于0表示第一个数据小于第二个数据
if (o1.getName().compareTo(o2.getName()) == 0) {
return o1.getDesc().compareTo(o2.getDesc());
} else {
return o1.getName().compareTo(o2.getName());
}
}
});
set.addAll(list);
return new ArrayList<User>(set);
}
}