【发布时间】:2016-02-10 02:18:31
【问题描述】:
我有一个文本文件,其中每一行都包含一对名称和数量,如下所示:
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();
}
;
}
实际上,我如何以更实用的方式改进此代码,使其能够更并发地处理数据(使用并行流等)
【问题讨论】:
标签: java hashmap refactoring java-8 java-stream