两个 List 与 java 8 合并

埃德加·韩

有两个 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 ...}]},
]
ETO

试试这个:

Map<Integer, B> bMap = bList.stream()
                            .collect(toMap(B::getId, identity()));

aList.forEach(a -> a.setBList(a.getBIds()
                               .stream()
                               .map(bMap::get)
                               .collect(toList())));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

合并两个流Java 8

合并两个地图与Java 8

如何交错(合并)两个Java 8流?

Java 8:按键合并两个包含对象的列表

Java 8:合并两个包含ID的对象的列表

合并Java 8中的两个对象列表

如何使用 Java 8 合并两个不同类型的自定义对象列表

如何在Java-8中合并来自同一关系的两个列表

合并两个Long类型的列表,并添加到Java 8中的现有地图

使用Java 8合并具有唯一ID的两个列表中的对象

根据条件合并两个列表,然后使用Java 8将结果推送到地图

JAVA 8:如何使用2流合并两个列表

使用Java 8 Stream API合并两个Map <String,Integer>

使用Java 8 lambda /转换来合并和展平两个Map

Java 8流-合并两个集合,使其在特定字段中保持唯一

合并两个对象数组,Java

合并Java中的两个对象

合并两个列表 (java 7)

合并Java中的两个集合

合并两个对象(java)

Java 8:将List <List <List <Product >>合并到一个列表中

合并Java中的两个Map值,如果键相同,则追加Java 7或Java 8中不会覆盖的值

如何在Java8流中将两个String列表合并为一个列表而不重复

有没有办法合并两个在Java 8中使用流循环?

如何使用JAVA流8必要时修改某些值合并的POJO两个列表

在MySQL 8中合并两个JSON数组列

如何将两个 java8 流操作 - 一个终端和一个惰性 - 合并为一个操作?

在Python中合并两个list字典

在Angularfire 2中合并两个Firebase List Observables