我需要合并n个哈希表,最好使用Java 8的merge方法或类似方法进行循环合并,示例如下:
Map 1:
当我尝试像这样使用putall时:
如果重复键的值是
Map 1:
{Name:XXX,Phn:123,Work:""}
Map 2:{Name:XXX,Phn:456,Work: xyz}
Map 3:{Name:XXX,Phn:789,Work:""}
我想要得到以下输出结果:{
Name:XXX, // if all values for a key are same take one
Phn:123/456/789 // merge all non null values for same key
Work:xyz // make sure non-null values are never replaced
}
当我尝试像这样使用putall时:
public Map<String,String> mergeOriginalDataMaps(List<Integer> indexList, List<Map<String,String>> originalData) {
Map<String,String> tmpMap = new HashMap<String,String> ();
for (int index : indexList ) {
tmpMap.putAll(originalData.get(index));
}
return tmpMap;
}
如果重复键的值是
""
,则先前的值将被新值替换。我需要连接这些值而不是替换它们。
123/456/789
是什么意思?你想要一个Map<String, List<String>>
作为结果吗? - Tunakiname
、phone
和work
,而不是使用HashMap
。 - Paul Boddington"Phn"
值吗? - Paul Boddington