将列表转换为地图

问题描述 投票:-3回答:1

我有带有以下字段的对象列表:

public final UUID uuid;
public final LocalDate date;
public final long value;

并且我想将其转换为Map<UUID, Map<LocalDate, Long>>,但同时我需要按日期对值求和。

因此具有这样的数据:

UUID | LocalDate | Long
uuid1| 2012-12-10| 100
uuid1| 2012-12-11| 200
uuid2| 2012-12-10| 300
uuid2| 2012-12-10| 200

我想要:

uuid1: {
   [2012-12-10, 100],
   [2012-12-11, 200]
},
uuid2: {
   [2012-12-10, 500]
}

是否可以使用Stream API实现此目标?

java collections java-stream
1个回答
0
投票

如果您的班级看起来像这样,则使用setter和getters

public class SomeObject {
        public   UUID uuid;
        public  LocalDate date;
        public  Long value;

您可以使用Collectors.groupingBy的变体,该变体接受分类器功能,并使用另一个收集器对uuid进行分组并收集要映射的对象

© www.soinside.com 2019 - 2024. All rights reserved.