Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java8流创建地图?_Java_Java 8_Java Stream - Fatal编程技术网

如何使用Java8流创建地图?

如何使用Java8流创建地图?,java,java-8,java-stream,Java,Java 8,Java Stream,如何使用Java8流更新地图?至于现在,我正在做: Map<String, Integer> testMap = Maps.newHashMap(); for(Map.Entry<String,Integer> testEntrySet : testCounts.entrySet()) { String name = Utils.cleanName(testEntrySet.getKey());

如何使用Java8流更新地图?至于现在,我正在做:

        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;
    }
Map testMap=Maps.newHashMap();
对于(Map.Entry testEntrySet:testCounts.entrySet()){
String name=Utils.cleanName(testEntrySet.getKey());
if(testMap.containsKey(名称)){
testMap.put(名称,testMap.get(名称)+
get(testEntrySet.getKey());
}否则{
put(name,testCounts.get(testEntrySet.getKey());
}
}
返回testMap;
}

我尚未对其进行测试,但我怀疑您的代码相当于:

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

(使用适当的静态
收集器导入)。

我还没有测试它,但我怀疑您的代码相当于:

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

(使用适当的静态
收集器导入)。

侧边注释:
testCounts.get(testEntrySet.getKey())
=>
testEntrySet.getValue()
…Utils.cleanName(…)
做什么?在源映射中,键是唯一的,因此不需要复杂的合并逻辑,除非
cleanName
可以从以前唯一的键中产生不明确的名称。您可以用
testEntrySet.forEach((key,value)->testMap.merge(Utils.cleanName(key),value,Integer::sum))替换循环逻辑
,但如果您坚持使用流,请选择assylias的答案。旁注:
testCounts.get(testEntrySet.getKey())
=>
testEntrySet.getValue()
…Utils.cleanName(…)
做什么?在源映射中,键是唯一的,因此不需要复杂的合并逻辑,除非
cleanName
可以从以前唯一的键中产生不明确的名称。您可以用
testEntrySet.forEach((key,value)->testMap.merge(Utils.cleanName(key),value,Integer::sum))替换循环逻辑,但如果您坚持使用流,请选择assylias的答案。