假设我有一个Employee类排序对象
Employee {
int id;
String name;
Date DOB;
}
创建100个对象,并把它们放在集,但希望他们排序上DOB的今天,对名其他一些日子,和一些其他的一天在身份证上。 我可以创建三个比较器,但不知道应该在哪里传递这些比较器,因为Collections.sort将List作为第一个参数。
是TreeSet(接受Comparator作为构造函数)唯一的解决方案吗?
假设我有一个Employee类排序对象
Employee {
int id;
String name;
Date DOB;
}
创建100个对象,并把它们放在集,但希望他们排序上DOB的今天,对名其他一些日子,和一些其他的一天在身份证上。 我可以创建三个比较器,但不知道应该在哪里传递这些比较器,因为Collections.sort将List作为第一个参数。
是TreeSet(接受Comparator作为构造函数)唯一的解决方案吗?
TreeSet
是一个总是根据某个比较器排序的集合。所以你可以有三套不同的套件,每套套件都有自己的比较器。
Set
s没有订单。他们就像数学集。
例如,如果您需要订单,则需要List
。然后你可以对它们进行分类,或者给他们任何你想要的订单。
您应该从Set
中创建一个List
,然后应用您想要的Comparator
。如果您想重新对其进行分类,只需再次应用sort()
,并使用其他Comparator
即可。
向我们展示您的研究成果。 *大量谷歌点击您的问题标题:[点击](https://www.google.com/search?q=sort+objects+in+set&aq=f&oq=sort+objects+in+set&aqs=chrome.0.57 j60j0l2j60.1517&sourceid = chrome&ie = UTF-8) – djechlin 2013-03-14 21:19:29
通过构建,例如,HashSet不会被排序。所以对其应用“排序”方法没有多大意义。您的主要选项:将数据存储在列表中,然后将其排序或存储在TreeSet中。 – assylias 2013-03-14 21:19:49
@assylias - OP提到'TreeSet',但不是'HashSet'。我认为OP已经知道使用支持排序的“Set”实现。一个'TreeSet'仍然是一个'Set'。 – 2013-03-14 21:21:44