如何获得嵌套列表的串联<;长期>;使用java收集器
我想检索给定此嵌套结构的不同long列表:如何获得嵌套列表的串联<;长期>;使用java收集器,java,lambda,java-8,Java,Lambda,Java 8,我想检索给定此嵌套结构的不同long列表: Class A public List<B> getBs() Class B public List<Long> getIds() List<A> list = ... // how do I now get all of longs as a distinct list A类 公共列表getBs() B类 公共列表getIds() 列表=。。。 //我现在如何将所有的long作为一个不同的列表来获取 我意
Class A
public List<B> getBs()
Class B
public List<Long> getIds()
List<A> list = ...
// how do I now get all of longs as a distinct list
A类
公共列表getBs()
B类
公共列表getIds()
列表=。。。
//我现在如何将所有的long作为一个不同的列表来获取
我意识到我可以做2个for循环,但考虑到Java8的新功能,我只是刚刚习惯,我确信有更好的方法
为了澄清,我需要列表
(而不是列表
)
谢谢下面的代码应该可以工作-您使用
映射
沿着嵌套结构,然后将ID列表“平面映射”到一个连接的长数据流中,您可以在其中应用distinct
中间操作
List<A> list = ...;
List<Long> uniqueIds = list.stream() //Stream<A>
.map(A::getBs) //Stream<List<B>>
.flatMap(List::stream) //Stream<B>
.map(B::getIds) //Stream<List<Long>>
.flatMap(List::stream) //Stream<Long>
.distinct()
.collect(toList());
List=。。。;
List uniqueid=List.stream()//流
.map(A::getBs)//流
.flatMap(列表::流)//流
.map(B::getIds)//流
.flatMap(列表::流)//流
.distinct()
.collect(toList());
我很困惑您想要列表还是列表?问题已澄清。我需要一份清单