我正在尋找一種方法來維護我的鍵值對上的排序。它們通過實際鍵值對之外的變量排序(以獲得更好的UI)。我目前使用哈希表,但不維護排序=(在Java中存儲預排序鍵值對的內置方式?
Hashtable<Integer, String> subscriptions = getUsersSubscriptions(user);
有一些簡單的方法,即Java允許一個儲存對?我能想到的是使用2相關的ArrayList的最佳想法(Integer類型之一,另一個String類型的)。有人能想出更好的?
我正在尋找一種方法來維護我的鍵值對上的排序。它們通過實際鍵值對之外的變量排序(以獲得更好的UI)。我目前使用哈希表,但不維護排序=(在Java中存儲預排序鍵值對的內置方式?
Hashtable<Integer, String> subscriptions = getUsersSubscriptions(user);
有一些簡單的方法,即Java允許一個儲存對?我能想到的是使用2相關的ArrayList的最佳想法(Integer類型之一,另一個String類型的)。有人能想出更好的?
如果您的鍵值對已經排序,LinkedHashMap將保持插入順序。
換句話說,map.keySet()
返回的鍵將按照您將它們放入地圖的順序排列。
+1,以前不知道這個類。 – Daniel 2011-02-01 16:47:15
SortedMap<Integer, String> myMap = new TreeMap<Integer,String>();
如果你有一個自定義排序,傳遞Comparator
實例的的構造。但要小心這樣做,因爲使用不適合自然整數順序的比較器會使事情無法理解和調試。
@Ridudel:感謝您的編輯,但您還原了我的TreeSet-> TreeMap錯字:) – Daniel 2011-02-01 16:49:01
LinkedHashMap可以在這裏使用。
Java有一個簡單的方法讓一個存儲對嗎?
創建一個存儲這兩個屬性的自定義類。
它們由變量的實際鍵值對
添加第三個屬性數據的排序外排序。
然後你的類可以實現Comparable根據這個屬性根據需要對數據進行排序。
或者您可以使用自定義比較器對排序數據字段進行排序。
現在,類實例可以存儲在ArrayList中。
使用`Map`實現作爲`Hashtable`被認爲是過時的。 – Qwerky 2011-02-01 16:46:32