2014-02-25 71 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)); 
}