gpt4 book ai didi

Java 8 映射到对象列表,其中一个字段分组为一个列表

转载 作者:行者123 更新时间:2023-12-02 11:03:39 26 4
gpt4 key购买 nike

新手问题。我有一个来自数据库的原始 bean 逐行为

public class DataBean {
private Integer employeeId;
private String org;
private String comments;
// + Constructors, getters/setters
}

我需要将其映射到一个不同的 bean,其中多个组织按员工 ID 分组到一个列表中。 对于一个 EmployeeID,只有组织可以是多个;评论字段保证相同。

public class CustomDataBean {
private Integer employeeId;
private List<String> orgs;
private String comments;
// + Constructors, getters/setters
}

努力开始。正在想groupingBy如下所示,但返回一个 map ,并且我没有构建子列表。

Map<Integer, List<String>> temp = origData.stream().collect(
Collectors.groupingBy(OrigBean::getEmployeeId,
/* 2nd param? */ .. ))

我的目标是转型List<CustomDataBean> .

最佳答案

你可以使用这个:

List<CustomDataBean> result = origData.stream()
.collect(Collectors.groupingBy(DataBean::getEmployeeId))
.entrySet().stream()
.map(e -> new CustomDataBean(
e.getKey(),
e.getValue().stream().map(DataBean::getOrg).collect(Collectors.toList()),
e.getValue().get(0).getComments()))
.collect(Collectors.toList());

这会将分组结果映射到您的 CustomDataBean 对象。

对于输入:

List<DataBean> origData = Arrays.asList(
new DataBean(1, "a", "c"),
new DataBean(1, "b", "c"),
new DataBean(1, "c", "c"),
new DataBean(2, "a", "d"),
new DataBean(2, "c", "d")
);

结果将是这样的:

CustomDataBean[employeeId=1, orgs=[a, b, c], comments='c']
CustomDataBean[employeeId=2, orgs=[a, c], comments='d']

关于Java 8 映射到对象列表,其中一个字段分组为一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080335/

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