【发布时间】:2021-06-02 02:43:39
【问题描述】:
我有三个包含不同对象的不同列表。我需要遍历每个列表,比较一个字段,如果相同,则创建新对象。
ObjectA: firstName, id
ObjectB: email, id
ObjectC: birthday, id
Model: firstName, email, birthday, id
我能否以某种方式使用流搜索通过 id 的对象列表并在输出上创建具有提及字段的模型列表?
我试过这个:
List<ObjectA> list1;
List<ObjectB> list2;
List<ObjectC> list3;
List<Model> output = list1.stream().flatMap(p -> list2.stream()
.filter(t -> p.getId().equals(t.getId())).findFirst()
.flatMap(t -> list3.stream()
.filter(i -> t.getId().equals(i.getId())).findFirst()
.flatMap(i -> new Model(p, i, t)))) // Model has a constructor, that takes classes as values
.collect(Collectors.toList());
【问题讨论】:
标签: java list lambda collections java-stream