2011-08-22 124 views
3

有沒有誰知道如何將地圖轉換到一個列表轉換一個映射到列表

我發現這裏是這樣的:

List<Value> list = new ArrayList<Value>(map.values()); 

但是這是要存儲的僅僅是價值該地圖列表

我想要做的是:關鍵&的值複製到列表

那麼,你知道如何實現這一目標?

+0

地圖和列表是不同的數據結構,你想如何將地圖鍵和值組合到列表中? – beny23

+0

您能否詳細說明「將密鑰和值複製到列表中」的含義? – aioobe

+0

我知道,但我必須這樣做 –

回答

9

這會給你的地圖項的列表:

List<Map.Entry<Key, Value>> list = 
    new ArrayList<Map.Entry<Key, Value>>(map.entrySet()); 

供參考,條目有getKey()getValue()方法。

3

嘗試存儲mapMap.Entry S:

new ArrayList<Entry<Key, Value>>(map.entrySet()); 

例子:

public static void main(String[] args) { 

    Map<String, Integer> map = new HashMap<String, Integer>(); 

    map.put("Hello", 0); 
    map.put("World!", 1); 

    ArrayList<Entry<String, Integer>> list = 
     new ArrayList<Entry<String, Integer>>(map.entrySet()); 

    System.out.println(list.get(0).getKey() + " -> " + list.get(0).getValue()); 
} 
2

@Bohemian和@dacwe都是對的。另外我會說:在大多數情況下,您不必創建自己的列表。只需使用map.entrySet()。它返回Set,但Set只是一個允許遍歷其元素的Collection。在95%的案例中迭代已經足夠。你可以做

3

的方法之一是將像所有的按鍵創建列表:

List list = new ArrayList(map.keySet()); 

然後加入像所有的值:

list.addAll(map.values); 

然後可能你已經與索引訪問例如: 如果地圖大小爲10,則知道列表中有20個元素。 所以你必須編寫一個邏輯來訪問列表中的鍵值,並正確計算索引,例如:size/2。 我不確定這是否有助於您的要求。