我需要将对象用户放入集合中,然后通过三个比较器对它们进行排序。 因此排序后的集合必须通过一个变量。 什么样的集合可供选择?如何实现它?集合和比较器
ArrayList<User> list2 = Collections.sort(list , new NameComparator());
所以这是不可能的。我可以使用TreeSet或ArrayList吗?
public class User {
private String name;
private String surname;
private String login;
}
public class NameComparator implements Comparator<User>{
public int compare(User a, User b){
return a.getName().compareTo(b.getName());
}
}
public class SurnameComparator implements Comparator<User>{
public int compare(User a, User b){
return a.getSurname().compareTo(b.getSurname());
}
}
public class LoginComparator implements Comparator<User>{
public int compare(User a, User b){
return a.getLogin().compareTo(b.getLogin());
}
}
怎么办?
TreeSet set1= new TreeSet<User>(new NameComparator());
set1.add(new User("RRRR","TTTT","KK"));
set1.add(new User("AAA","EEEEE","QQQQ"));
set1.add(new User("GGGG","BBBBB","ssss"));
set1.add(new User("BBBB","BBBBF","AAAA"));
System.out.println(set1);
TreeSet set2= new TreeSet<User>(new LoginComparator());
set2=set1;
System.out.println(set2);
那么如何在同一个集合中分配另一个比较器(新的SurnameComparator())呢? – Dmitry88
请你清楚解释一下吗?你想基于姓氏对排序后的Treeset进行排序吗?是的,你也可以这样做。创建另一个Treeset并在创建时使用SurnameComparator。将以前的userSet添加到新的TreeSet。如果这不是你所问的,请清楚指明你想要的。 –
TreeSet set1 = new TreeSet(new NameComparator()); \t \t \t \t set1.add(new User(“11”,“3”,“2”)); \t \t set1.add(新用户(“5”,“3”,“1”)); \t \t set1.add(新用户(“1”,“1”,“5”)); (新用户(“2”,“1”,“4”)); \t \t \t \t System.out.println(set1); \t \t \t \t TreeSet set2 = new TreeSet (new LoginComparator()); \t \t set2 = set1; \t \t System.out.println(set2); –
Dmitry88