如何使用Java8 Stream创建Map?

时间:2017-05-10 15:35:34

标签: java java-8 java-stream

如何使用java 8流更新Map?至于现在我在做什么:

        Map<String, Integer> testMap = Maps.newHashMap();

        for(Map.Entry<String,Integer> testEntrySet : testCounts.entrySet()) {
            String name = Utils.cleanName(testEntrySet.getKey());

            if(testMap.containsKey(name)) {
                testMap.put(name, testMap.get(name) +
                        testCounts.get(testEntrySet.getKey()));
            } else {
                testMap.put(name, testCounts.get(testEntrySet.getKey()));
            }

        }
        return testMap;
    }

1 个答案:

答案 0 :(得分:5)

我没有测试过,但我怀疑你的代码相当于:

return testCounts.entrySet().stream()
        .collect(groupingBy(e -> Utils.cleanName(e.getKey()),
                            summingInt(e -> e.getValue())));

(使用适当的静态Collectors导入)。