gpt4 book ai didi

java - 收集和比较器

转载 作者:行者123 更新时间:2023-12-01 10:56:28 24 4
gpt4 key购买 nike

我需要将对象 User 放入集合中,然后通过三个 Comparator 对它们进行排序。因此排序的集合必须传递一个变量。选择什么集合呢?如何实现?

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);

最佳答案

您可以使用 ArrayList 集合,但每次插入后元素不会自动排序(除非您再次调用显式排序)。要实现此目的,您必须使用 TreeSet(或 ConcurrentSkipListSet)。

要使用ArrayList,您可以简单地执行以下操作:

ArrayList<User> myList = new ArrayList<>();
myList.add(new User());
myList.add(new User());
myList.add(new User());
// Add your elements.

Collections.sort(myList , new LoginComparator());
Collections.sort(myList , new SurnameComparator());
Collections.sort(myList , new NameComparator());

还请考虑方法 Collections.sort(...) 返回新实例,它是一个 void 方法。在第一行中,您将排序结果分配给一个新的 ArrayList。

关于java - 收集和比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com