2011-02-01 30 views
1

我正在尋找一種方法來維護我的鍵值對上的排序。它們通過實際鍵值對之外的變量排序(以獲得更好的UI)。我目前使用哈希表,但不維護排序=(在Java中存儲預排序鍵值對的內置方式?

Hashtable<Integer, String> subscriptions = getUsersSubscriptions(user); 

有一些簡單的方法,即Java允許一個儲存對?我能想到的是使用2相關的ArrayList的最佳想法(Integer類型之一,另一個String類型的)。有人能想出更好的

+2

使用`Map`實現作爲`Hashtable`被認爲是過時的。 – Qwerky 2011-02-01 16:46:32

回答

8

如果您的鍵值對已經排序,LinkedHashMap將保持插入順序。

換句話說,map.keySet()返回的鍵將按照您將它們放入地圖的順序排列。

+0

+1,以前不知道這個類。 – Daniel 2011-02-01 16:47:15

5
SortedMap<Integer, String> myMap = new TreeMap<Integer,String>(); 

如果你有一個自定義排序,傳遞Comparator實例的的構造。但要小心這樣做,因爲使用不適合自然整數順序的比較器會使事情無法理解和調試。

+0

@Ridudel:感謝您的編輯,但您還原了我的TreeSet-> TreeMap錯字:) – Daniel 2011-02-01 16:49:01

0

Java有一個簡單的方法讓一個存儲對嗎?

創建一個存儲這兩個屬性的自定義類。

它們由變量的實際鍵值對

添加第三個屬性數據的排序外排序。

然後你的類可以實現Comparable根據這個屬性根據需要對數據進行排序。

或者您可以使用自定義比較器對排序數據字段進行排序。

現在,類實例可以存儲在ArrayList中。