2011-05-11 49 views
3

我如何轉換這一點:如何列表轉換爲一個HashMap

Map<String, Integer> itemsBought 

這樣如下我可以添加它的ArrayList中:

public void add(String prd, int qty){ 
     orderList.add(new Order(prd, qty)); 
} 

是否有其他解決方案這旁邊:

hashMap.keySet().toArray(); 
hashMap.values().toArray(); 

在此先感謝您。

回答

11
for (Entry<String, Integer> entry : itemsBought.entrySet()) { 
    orderList.add(new Order(entry.getKey(), entry.getValue())); 
} 
1
for (String product : itemsBought.keySet()) { 
    int quantity = itemsBought.get(product); 
    orderList.add(new Order(product, quantity)); 
} 

我喜歡更多的可讀性(雖然不多)無論實施

+1

L,這顯然是由Tarlog的回答表明,你必須以填充'ArrayList'遍歷集合。這就是說,我沒有看到這個答案中的任何價值。 – mre 2011-05-11 17:43:07

+1

該解決方案爲每個密鑰(可能是O(n)最糟糕的情況)進行映射查找,具體取決於實現,查看O(2n))。第一個解決方案,依賴於實現,可能只是循環遍歷O(n)中的所有條目。對於瑣碎的地圖大小,這是完全不相關的。 – 2011-05-11 17:50:02