Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得嵌套列表的串联<;长期>;使用java收集器_Java_Lambda_Java 8 - Fatal编程技术网

如何获得嵌套列表的串联<;长期>;使用java收集器

如何获得嵌套列表的串联<;长期>;使用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作为一个不同的列表来获取 我意

我想检索给定此嵌套结构的不同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());

我很困惑您想要列表还是列表?问题已澄清。我需要一份清单