首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List<List<String>>对象中的Java 8分组和求和

问List<List<String>>对象中的Java 8分组和求和
EN

Stack Overflow用户
提问于 2020-03-06 08:15:58
回答 1查看 58关注 0票数 0

我有一个List<List<String>>,其中包含要在csv中输出的表值。

代码语言:javascript
复制
id|name|rank|count
1|aaa|A1|2
2|aaa|A0|1
3|bbb|A2|5
4|bbb|A1|3
5|ccc|A|2

我想按列表中的第二个元素(上面示例中的名称)进行分组,并对计数字段进行求和。预期产出如下。

代码语言:javascript
复制
name|count
aaa|3
bbb|8
ccc|2

在Java 8中实现这一目标的最佳方法是什么?请指点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-06 08:43:11

这是你的要求:

代码语言:javascript
复制
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对象则更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60559989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档