4
我有上每一行包含对名称和数量的这样的文件,文本文件:总和在地图值的特定键
Mike 5
Kate 2
Mike 3
我需要重点总结这些值。我这样
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
try {
Files.lines(Paths.get("/Users/walter/Desktop/stuff.txt"))
.map(line -> line.split("\\s+")).forEach(line -> {
String key = line[0];
if (map.containsKey(key)) {
Integer oldValue = map.get(key);
map.put(key, oldValue + Integer.parseInt(line[1]));
} else {
map.put(line[0], Integer.parseInt(line[1]));
}
});
map.forEach((k,v) -> System.out.println(k + " " +v));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
;
}
如何实际上当你想要写功能,我可以提高更多的功能性的方式这种代码,abillity更多(使用并行流等)
很好的解释!那么在示例中的并发处理(并行流使用)呢? –
@GerardRozsavolgyi我不确定读取文件中的行是否会并行化,但这只是在Stream流水线上调用“parallel()”的问题。也许最好是收集列表中的所有行,并调用该列表上的'parallelStream()',以便按行的第一部分对其进行分组。 – Tunaki