我有这个地图里面有另一个HashMap。如何对内部地图的值进行求和并进行比较呢?
地图尺寸也可以更改。所以我正在寻找适用于各种尺寸地图的解决方案。
{Team2={Alex=0, Tom=20}, Team1={John=0, Ammy=9, Monica=1}, Team3{...}, ...}
团队价值观 - > {Alex = 0,Tom = 20},{John = 0,Ammy = 9,Monica = 1} ......
这些值的值是 - > {0,20},{0,9,1} ...
我只想总结这些价值并找到最大值。
for(int i = 0 ; i < teamNameList.size() ; i++){
int sum = sum + teams.get(teamNameList.get(i)).values().values();
}
答案 0 :(得分:2)
如果您使用的是Java 8,则可以使用:
long sum = map.values().stream()
.mapToInt(i -> i.values().stream()
.mapToInt(m -> m).sum()).sum();
答案 1 :(得分:0)
您可以stream
通过条目,计算每个条目的总数,并将条目收集回新的map
,例如:
Map<String, Map<String, Integer>> map = new HashMap<>();
Map<String, Integer> data = new HashMap<>();
data.put("Alex", 10);
data.put("Tom", 20);
data.put("John", 30);
map.put("team1", data);
Map<String, Integer> totals = map.entrySet()
.stream()
.map(e -> new AbstractMap.SimpleEntry<>(e.getKey(), e.getValue().entrySet().stream().mapToInt(Map.Entry::getValue).sum()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(totals);