gpt4 book ai didi

java - 根据流中的另一个字段汇总字段

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:10 25 4
gpt4 key购买 nike

<分区>

我有一个看起来像这样的对象列表:

{
value=500
category="GROCERY"
},
{
value=300
category="GROCERY"
},
{
value=100
category="FUEL"
},
{
value=300
category="SMALL APPLIANCE REPAIR"
},
{
value=200
category="FUEL"
}

我想将其转换为如下所示的对象列表:

{
value=800
category="GROCERY"
},
{
value=300
category="FUEL"
},
{
value=300
category="SMALL APPLIANCE REPAIR"
}

基本上将所有具有相同类别的值相加。

我应该使用 flatMap 吗?降低?我不明白这些的细微差别来弄清楚。

帮忙吗?

编辑:

这个问题有很多重复的问题: Is there an aggregateBy method in the stream Java 8 api?Sum attribute of object with Stream API

但在这两种情况下,最终结果都是 map ,而不是列表

根据@AndrewTobilko 和@JBNizet 的回答,我使用的最终解决方案是:

List<MyClass> myClassList = list.stream()
.collect(Collectors.groupingBy(YourClass::getCategory,
Collectors.summingInt(YourClass::getValue)))
.entrySet().stream().map(e -> new MyClass(e.getKey(), e.getValue()).collect(toList());

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com