gpt4 book ai didi

java - 使用收集器将列表转换为对象映射 - Java

转载 作者:太空狗 更新时间:2023-10-29 22:54:12 27 4
gpt4 key购买 nike

如何使用收集器将 DAO 列表转换为 Map<String, List<Pojo>>

daoList 看起来像这样:

[0] : id = "34234", team = "gools", name = "bob", type = "old"
[1] : id = "23423", team = "fool" , name = "sam", type = "new"
[2] : id = "34342", team = "gools" , name = "dan", type = "new"

我想对“团队”属性进行分组,并为每个团队创建一个列表,如下所示:

"gools":
["id": 34234, "name": "bob", "type": "old"],
["id": 34342, "name": "dan", "type": "new"]

"fool":
["id": 23423, "name": "sam", "type": "new"]

Pojo 看起来像这样:

@Data
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class Pojo{

private String id;
private String name;
private String type;
}

这就是我尝试这样做的方式,显然是错误的方式:

public Team groupedByTeams(List<? extends GenericDAO> daoList)
{

Map<String, List<Pojo>> teamMap= daoList.stream()
.collect(Collectors.groupingBy(GenericDAO::getTeam))
}

最佳答案

您的集电器 - .collect(Collectors.groupingBy(GenericDAO::getTeam)) - 正在生成 Map<String,List<? extends GenericDAO>> .

为了生成一个Map<String, List<Pojo>> , 你必须转换你的 GenericDAO实例到 Pojo通过链接 Collectors.mapping() 实例 Collection 家到Collectors.groupingBy() Collection 家:

Map<String, List<Pojo>> teamMap = 
daoList.stream()
.collect(Collectors.groupingBy(GenericDAO::getTeam,
Collectors.mapping (dao -> new Pojo(...),
Collectors.toList())));

这是假设您有一些 Pojo接收 GenericDAO 的构造函数实例或相关GenericDAO属性。

关于java - 使用收集器将列表转换为对象映射 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56235518/

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