2011-11-29 32 views
14

我想要的東西,我可以插入鍵/值對,並且順序是我插入的項目。Java集合是有序的按照插入順序

我有看到一些關於地圖的帖子,但似乎我必須爲他們編寫自己的比較器。

我希望我插入的第一個項目是第一個存儲的,第二個是第二個項目的集合等。

+1

這是稱爲「LinkedHashMap」 –

回答

18

嘗試使用LinkedHashMap,從javadocs

哈希表和Map接口的鏈接列表實現,具有可預知的迭代順序此實現與HashMap的不同之處在於它維護的雙重鏈接列表中運行的所有條目。這個鏈表定義了迭代排序,這通常是鍵被插入映射的順序(插入順序)。

7

爲什麼不創建一個class來包含一個鍵和一個值,然後將它們存儲在您最喜歡的List實現中?

class Pair { 
    Key k; 
    Value v; 
} 

List<Pair> stuff = new ArrayList<Pair>(); 

Pair p = new Pair(); 
... 
stuff.add(p); 
1

好像你需要使用一個列表與名稱/值對象

List<NameValuePair> values = new Arraylist<NameValuePair>(); 

,然後使用列表,你會正常列表

class NameValuePair { 
    private name; 
    private value; 

    ... get/set 
} 
+0

我喜歡LinkedHashMap建議,但是,如果你走這條路線,看看Map.Entry並強烈考慮使用它,而不是定義你自己的NameValuePair類。 – user949300

+1

@ user949300:'Map.Entry '是一個接口,而不是一個類,我不知道任何實現它的公共JDK類。不過,我同意'NameValuePair'應該實現它。 – ruakh

+2

@ruakh查看AbstractMap.SimpleEntry和AbstractMap.SimpleImmutableEntry。 – user949300

相關問題