我有一个List<List<String>>,其中包含要在csv中输出的表值。
id|name|rank|count
1|aaa|A1|2
2|aaa|A0|1
3|bbb|A2|5
4|bbb|A1|3
5|ccc|A|2我想按列表中的第二个元素(上面示例中的名称)进行分组,并对计数字段进行求和。预期产出如下。
name|count
aaa|3
bbb|8
ccc|2在Java 8中实现这一目标的最佳方法是什么?请指点。
发布于 2020-03-06 08:43:11
这是你的要求:
String[] lines = {
"1|aaa|A1|2",
"2|aaa|A0|1",
"3|bbb|A2|5",
"4|bbb|A1|3",
"5|ccc|A|2"
};
List<List<String>> data = Stream.of(lines)
.map(e -> Arrays.asList(e.split("\\|")))
.collect(Collectors.toList());
Map<String, Integer> result = data.stream()
.collect(Collectors.toMap(e -> e.get(1),
e -> Integer.valueOf(e.get(3)),
Integer::sum)
);
System.out.println(result);但是如果将csv解析为Pojo对象则更好。
https://stackoverflow.com/questions/60559989
复制相似问题