gpt4 book ai didi

java - 使用 StreamAPI 按多个字段查找总和、平均分组

转载 作者:行者123 更新时间:2023-11-29 04:07:26 25 4
gpt4 key购买 nike

我有课

public class CenterReportDto {
ZonedDateTime date;
int centerId;
int amount;
float percent;
}

和项目列表

List<CenterReportDto> entityList = new ArrayList<>();

我试过了

entityList.stream()
.collect(Collectors.groupingBy(item -> item.getDate().getMonth(),Collectors.summingInt(CenterReportDto::getAmount)))
.forEach((s,j) -> System.out.println(s + "-" + j) );

entityList.stream()
.collect(Collectors.groupingBy(item -> item.getDate().getMonth(),
Collectors.averagingDouble(CenterReportDto::getPercent)))
.forEach((s,j) -> System.out.println(s + "-" + j) );

得到

JANUARY-7
FEBRUARY-9

JANUARY-3.5
FEBRUARY-4.5

如何组合两种方法并按月和 centerId 分组以获得“金额”字段的总和和“百分比”字段的平均值,例如:

JANUARY - 123 - 7 -  3.5
FEBRUARY -123 - 9 - 4.5
JANUARY - 456 - 7 - 3.5
FEBRUARY -456 - 9 - 4.5

最佳答案

它只计算总和,因为您使用了 Collectors.summingInt。您可以通过 Collectors.summarizingInt 获取 IntSummaryStatistics 自行计算平均值 。哦,不,有一个方便的IntSummaryStatistics#getAverage .

关于java - 使用 StreamAPI 按多个字段查找总和、平均分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57606055/

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