gpt4 book ai didi

Java 集合缩减为 Map

转载 作者:行者123 更新时间:2023-11-29 08:34:22 25 4
gpt4 key购买 nike

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

year  => 2016,
month => 10,
day => 11,
count => 123

我在 startDate <endDate 范围内的每一天都有一个元素。

我希望能够根据 startDateendDate 之间的间隔将这些元素缩减为不同的时间分组。如果 startDateendDate 之间的差异大于 4 年,我想将它们分组为年。如果差异小于四年但大于一年,我想将它们分组为几个月。如果小于一年但大于一个月,我想将其分组为数周。少于一个月,无需分组。

当我说“组”时,我的意思是我想对属于特定年份的所有内容的 count 元素求和(使用上面的第一个示例),并返回一个 single 每年的 map 如下所示:

year   => 2016,
month => 1
day => 1
count => 9897

我知道必须有一种优雅的方法来实现这一点,但我很难将我的大脑围绕在逻辑上。

最佳答案

我不明白,你可以简单地做:

if(starDate is smaller then endDate by 4 year) {

resultMap = yourList.stream()
.collect(Collectors.groupingBy(map.get("year"),
Collectors.summingInt(map.get("count")));

}

else if(starDate is... another condition) {
resultMap = yourList.stream()
.collect(Collectors.groupingBy(map.get("month"),
Collectors.summingInt(map.get("count")));

}

// all the there cases...

稍后将此结果映射到您想要的任何内容。

关于Java 集合缩减为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45470440/

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