2013-03-14 100 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即可。