通过使用相同名称的键连接列表来组合多个Map <string,list>结构

时间:2016-06-16 19:57:26

标签: java dictionary java-8

最干净的方法是什么?

我有

Map<String, List<String>> map1 = ...;  
Map<String, List<String>> map2 = ...; 
Map<String, List<String>> map3 = ...;

地图都具有完全相同的键,没有重复的值。我想为每个键将map2和map3的列表附加到map1列表的末尾。

我正在尝试这样做:

Map<String, List<String>> conversions = new HashMap<String, List<String>>();
List<String> histList = new ArrayList<String>();

for(String key : map1.keySet()){
    histList.addAll(map1.get(key));
    histList.addAll(map2.get(key));
    histList.addAll(map3.get(key));
    conversions.put(key,histList);
}

1 个答案:

答案 0 :(得分:7)

如果您不想制作临时列表,可以直接添加到列表一,而不是替换它。

for (String key: map1.keySet()) { //iterate over all the keys
    map1.get(key).addAll(map2.get(key)); //add all the values in map 2 to map 1
    map1.get(key).addAll(map3.get(key)); //add all the values in map 3 to map 1
}