2014-02-25 144 views
2

我有兩個ArrayList的字符串,並希望將它們合併爲一個哈希映射。我正在做這樣的事情。從ArrayList創建HashMap

HashMap<ArrayList<String>,ArrayList<String>> map = new HashMap<ArrayList<String>, ArrayList<String>>(); 

ArrayList<String>k = receivedIntent.getStringArrayListExtra("keys"); 
ArrayList<String>v = receivedIntent.getStringArrayListExtra("values"); 

map.put(k, v); 

這是正確的方法嗎?理想情況下,我想訪問v數組中的值,使用k數組中的值作爲散列圖中的鍵,如value = map.get("Name"),其中Name是其中一個鍵?

+3

不,這隻會將一個條目放入地圖中。您需要遍歷這兩個列表,並分別放入條目。 –

回答

2

首先,我們正在做的假設,這兩個K和V將是平等的長度和密鑰將是唯一的。你可能想用try/catch塊來包圍映射。

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

ArrayList<String>k = receivedIntent.getStringArrayListExtra("keys"); 
ArrayList<String>v = receivedIntent.getStringArrayListExtra("values"); 

for(int i = 0; i < k.size(); i++) map.put(k.get(i), v.get(i)); 
1

假設兩個列表的長度是相同的,並要具備的要素作爲鍵值對:

ArrayList<String> k = receivedIntent.getStringArrayListExtra("keys"); 
ArrayList<String> v = receivedIntent.getStringArrayListExtra("values"); 
HashMap<String,String> map = new HashMap<String, String>(); 
for (int i = 0; i < k.size() && i < v.size(); ++i) { 
    // putting each element of k/v into the map 
    map.put(k.get(i), v.get(i)); 
}