【发布时间】:2021-06-08 04:09:05
【问题描述】:
有两个List vo类
class A {
Integer aid;
List<Integer> bIds;
List<B> bList;
}
class B {
Integer id;
String Name;
}
List<A> aList; //size:3, bIds: {2,3}, {1,2}, {3}
List<B> bList; //id [{bId:1, ...},{bId:2, ...},{bId:3, ...},{bId:4, ...},{bId:5, ...}]
我想把 B 对象放在每个 A 对象的列表中
如何让我用 java 流做到这一点?
这段代码不工作
aList.forEach(
a -> {
a.setBList(
a.getBIds().stream()
.flatMap(id -> b.stream().filter(b -> b.getId() == id))
.collect(Collectors.toList())
);
}
);
期待输出
//pre
aList = [
{aid: 1, bIds: [2,3], bList:[]},
{aid: 2, bIds: [1,2], bList:[]},
{aid: 3, bIds: [3], bList:[]},
]
//after
aList = [
{aid: 1, bIds: [2,3], bList:[{bId:2 ...},{bId:3 ...}]},
{aid: 2, bIds: [1,2], bList:[{bId:1 ...},{bId:2 ...}]},
{aid: 3, bIds: [3], bList:[{bId:2 ...}]},
]
【问题讨论】:
-
到目前为止你尝试了什么?请显示一些代码。
-
@EdgarHan 不要将代码 sn-ps 放入 cmets,而是将它们附加到问题
-
@Nikolai Shevchenko 谢谢你,我编辑了我的帖子
-
@EdgarHan 可能也会添加预期的输出。
标签: java lambda collections java-8 java-stream