Java 对集合中的对象进行排序

Java 对集合中的对象进行排序,java,collections,compare,Java,Collections,Compare,假设我有一个Employee类 Employee { int id; String name; Date DOB; } 我创建了100个对象并将它们放在集合中,但希望它们今天按DOB排序,另一天按名称排序,另一天按id排序。 我可以创建三个比较器,但不确定应该在哪里传递这些比较器,因为集合。排序将列表作为第一个参数。 TreeSet(接受比较器作为构造函数)是唯一的解决方案吗?TreeSet是一个集合,它总是根据一些比较器进行排序。所以你可以有三个不同的集合,每个集合都

假设我有一个Employee类

Employee {
    int id;
    String name;
    Date DOB;
}
我创建了100个对象并将它们放在集合中,但希望它们今天按DOB排序,另一天按名称排序,另一天按id排序。 我可以创建三个比较器,但不确定应该在哪里传递这些比较器,因为集合。排序将列表作为第一个参数。

TreeSet(接受比较器作为构造函数)是唯一的解决方案吗?
TreeSet
是一个集合,它总是根据一些比较器进行排序。所以你可以有三个不同的集合,每个集合都有自己的比较器。

Set
s没有顺序。它们就像数学集

例如,如果您想要订单,您需要一个
列表
。然后你可以对它们进行分类,或者给它们任何你想要的顺序


您应该根据您拥有的
集合
创建一个
列表
,然后应用所需的
比较器
。如果您想重新排序,只需再次应用
sort()
,使用不同的
比较器

向我们展示您的研究。你的问题标题有大量的谷歌点击:例如,根据构造,哈希集是不排序的。因此,对其应用
排序
方法没有多大意义。您的主要选项:将数据存储在列表中,然后排序或存储在树集中。@assylias-OP提到了
TreeSet
,但没有提到
HashSet
。我认为OP已经知道如何使用支持排序的
Set
实现。一个
TreeSet
仍然是一个
Set
@djechlin我想你错过了我的问题“TreeSet(接受比较器作为构造函数)是唯一的解决方案吗?”不管怎样,你认为使用TreeSet可能是最明显和最简单的解决方案。这肯定不是唯一的一个。