Man*_*tel 4 java lambda java-8
给定这个嵌套结构,我想检索不同的Longs列表:
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
Run Code Online (Sandbox Code Playgroud)
我意识到我可以做2 for循环,但是考虑到Java8的新功能,我只是习惯了,我确信有更好的方法.
澄清一下,我要求List<long>(不是List<A>)
谢谢
类似下面的代码应该可以工作 - 你可以使用嵌套结构map,然后将"flatMap"列表中的id列入一个连接的Longs流,您可以在其中应用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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |