2011-12-07 60 views
1

我讀下面的數據 -哪個集合可以做到這一點?

Year, No, Name, 
2009, 1, ABC 
2009, 2, PQR 
2009, 3, XYZ 
2010, 1, BCD 
2010, 2, DEF 
2010, 3, JKL 
2011, 1, FGH 
2011, 2, IJK 
2011, 3, LMN 

它的樣本中,有數以千計的類型。 我需要顯示在JList中的獨特Year值和所選擇的Year,我得給一個複選框,而如果選擇,將顯示Name上排序No,否則上排序Name

+4

難道你不想創建一個類,例如具有三個字段('Year','No'和'Name')的'Baby'並將其實例放入例如一個ArrayList? –

回答

3

你需要看起來像一個Map,重點將是Year,和值將是NoNumber列表(你需要創建自己的類)。

然後,你需要創建兩個Comparator,一種是基於Name,另一種是No。因此,當複選框被選中時,您可以使用基於Name的比較器對列表進行排序,如果未選中,請使用基於No的比較器對列表進行排序。

+0

@ wyz-是使用2比較器,我可以得到必要的輸出..非常感謝.. :) – John

2
Map<String, Set<YourStruct>> 

以年爲關鍵? YourStruct - bean,持有年份,否和名稱。您可以使用Collections.sort()進行排序。

1

我想你需要整理這些年來也一樣,所以作爲頂層用TreeMap的用一年鍵,數值將是你的類包裝2個TreeSets - 對不,一個名稱 - 他們將只是通過增加值來排序,再加上它們不允許重複。

或者不要創建包裝類並使用兩個TreeMaps - 這不是一個很大的區別。

+0

不,我不需要年份進行排序。年份的不同列表已經填充在JList中。所以基於這個JList值即Yea​​r,我需要在另一個JList中檢索名稱。現在,檢索名稱的順序應該基於名稱或編號。默認選項是否,如您從上述示例 – John

+0

中看到的那樣,沒有仔細閱讀 - 因此您可以使用頂級(或HashTable,如果你需要同步訪問),並使用TreeMap的情況下,當你需要名稱排序由No(他的關鍵)。 –

相關問題