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