遺伝子b。:
初心者の質問。私はDBから行ごと来る原豆を有します
public class DataBean {
private Integer employeeId;
private String org;
private String comments;
// + Constructors, getters/setters
}
私は、リストの中に従業員IDでグループ化された複数の組織の持つ別のBeanにそれをマップする必要があります。唯一の[組織は、社員のために複数のことができます。コメント欄には同じであることが保証されます。
public class CustomDataBean {
private Integer employeeId;
private List<String> orgs;
private String comments;
// + Constructors, getters/setters
}
始めるのに苦労。考えていたgroupingBy
地図が、以下戻っているような、と私は、サブリストを構築していませんよ。
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']