2013-06-28 58 views
17

我想知道是否可以排序LinkedHashSet。我已經試過聲明排序LinkedHashSet

Collections.sort((List<Comparable> paragraph);

然而,這只是拋出一個錯誤,它不能被鑄造成一個列表。有沒有辦法做到這一點,或者我應該使用另一個數據結構?

+6

改爲使用'TreeSet'。 –

+1

你可以使用SortedSet – Tala

+1

改爲使用sortedSet,在數學視圖中導致'set'沒有順序 – nachokk

回答

25

如果您關心基於比較的排序(例如排序順序),則應該使用SortedSet,如TreeSetConcurrentSkipListSet

A LinkedHashSet保留訂單根據插入訂單

如果你真的想使用Collections.sort您可以通過實際構建List(雖然這個問題並沒有告訴我們的paragraph的類型,所以我會假設它是String

List<String> listParagraph = new ArrayList<String>(paragraph); 
Collections.sort(listParagraph) 
的LHS轉換成一個列表

但這可能不是最好的方法。

4

Collections.sort不適用於Set s,僅限於List s。如果您需要對已在Set中的數據進行排序,則可能需要先將它們添加到List中。

1

您可以將LinkedHashSet對象(linkedHashSet)添加到TreeSet中並對它進行排序。

TreeSet<T> treeSet = new TreeSet<t>(); 
treeSet.addAll(linkedHashSet); 

treeSet是有序集合。

請注意,您需要使這些T類型具有可比性(通過實現Comparator接口)。