我有一个嵌套映射,其中键作为员工姓名,值作为另一个映射,键作为公司名称,值作为多年经验,如下所示
Map<String, Map<String, Integer>> map = new HashMap<>();
Map<String, Integer> innerMap1 = new HashMap<>();
innerMap1.put("INfosys", 2);
innerMap1.put("Volvo", 2);
innerMap1.put("MH", 3);
innerMap1.put("Piterion", 1);
Map<String, Integer> innerMap2 = new HashMap<>();
innerMap2.put("Tata", 2);
innerMap2.put("Bosch", 1);
innerMap2.put("Amber", 1);
innerMap2.put("E2", 1);
map.put("Rahul", innerMap1);
map.put("Amrita", innerMap2);
现在我的函数应该返回一个 map ,其中员工姓名作为键,总经验作为值。我怎样才能使用 java 流(在单个流中)做到这一点
public Map<String, Integer> getEmployeesWithExp(Map<String, Map<String, Integer>> map) {
map.entrySet().stream().
...
return null;
}
最佳答案
可能有多种方法,但您可以收集
条目到一个新映射中,并将内部映射的值减少为整数,例如像这样:
Map<String, Integer> result =
map.entrySet().stream()
.collect(
Collectors.toMap(e -> e.getKey(), //or Map.Entry::getKey
e -> e.getValue().values().stream()
.reduce(0, Integer::sum)));
关于java - 从 Map<String, Map<String, Integer>> 流中收集 Map<String, Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376037/