2013-03-14 133 views
-2

假设我有一个Employee类排序对象

Employee { 
    int id; 
    String name; 
    Date DOB; 
} 

创建100个对象,并把它们放在集,但希望他们排序上DOB的今天,对名其他一些日子,和一些其他的一天在身份证上。 我可以创建三个比较器,但不知道应该在哪里传递这些比较器,因为Collections.sort将List作为第一个参数。
是TreeSet(接受Comparator作为构造函数)唯一的解决方案吗?

+1

向我们展示您的研究成果。 *大量谷歌点击您的问题标题:[点击](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

+0

通过构建,例如,HashSet不会被排序。所以对其应用“排序”方法没有多大意义。您的主要选项:将数据存储在列表中,然后将其排序或存储在TreeSet中。 – assylias 2013-03-14 21:19:49

+1

@assylias - OP提到'TreeSet',但不是'HashSet'。我认为OP已经知道使用支持排序的“Set”实现。一个'TreeSet'仍然是一个'Set'。 – 2013-03-14 21:21:44

回答

0

TreeSet是一个总是根据某个比较器排序的集合。所以你可以有三套不同的套件,每套套件都有自己的比较器。

0

Set s没有订单。他们就像数学集。

例如,如果您需要订单,则需要List。然后你可以对它们进行分类,或者给他们任何你想要的订单。

您应该从Set中创建一个List,然后应用您想要的Comparator。如果您想重新对其进行分类,只需再次应用sort(),并使用其他Comparator即可。