【发布时间】:2016-07-21 17:14:23
【问题描述】:
假设我有多个 N 个带有-> key:string val:Object 的映射
我想将它们全部合并到一张大地图中,并将它们的对象字段值相加:
例如:
import java.util.HashMap;
import java.util.Map;
/**
* Created by vitaly on 21/07/2016.
*/
public class Merge {
static Map<String, Container> map1 = new HashMap<>();
static Map<String, Container> map2 = new HashMap<>();
static Map<String, Container> map3 = new HashMap<>();
public void initMaps() {
map1.put("aaa", new Container(1, "title_aaa"));
map1.put("bbb", new Container(4, "title_bbb"));
map2.put("ccc", new Container(7, "title_ccc"));
map2.put("aaa", new Container(10, "title_aaa"));
map3.put("aaa", new Container(13, "title_aaa"));
map3.put("bbb", new Container(16, "title_bbb"));
...
mapN.put(...
}
class Container {
public Container(int val1, String title) {
this.val1 = val1;
this.title = title;
}
int val1;
String title;
}
public static void main(String[] args) {
Merge.mergeMaps(map1, map2, map3);
}
public static Map<String, Container> mergeMaps(Map... maps) {
/**
* HOW create one merged map that sums the values
*/
// The result should be:
//map(aaa, {24,title_aaa ) //1+10+13
//map(bbb, {20,title_ccc ) //4+16
//map(ccc, {7,title_ccc ) //7
return map;
}
}
更喜欢 Java 8 但没关系 :)
非常感谢!
【问题讨论】:
-
putAll会工作吗? -
不要认为它会对“Container”类的值求和
-
你有什么问题?您似乎没有
mergeMaps方法。您是否要求一个解决方案来完成您想要完成的所有事情,因为那样看来您自己做的还不够 -
我已经更新了标题,我正在尝试在合并地图后对值进行总和。 putAll 方法只更新最后一个值
标签: java dictionary hashmap java-8