猿问

Java Streams和List of List

出于某种原因,我无法理解如何使用流将这个深度嵌套的列表变成一个新列表。

   every A in List<A> contains -> 
   List<B> where every B contains -> 
   List<C> where every C contains -> List<String>

我尝试了许多不同的迭代,例如:

  List<String> newlist =  listA.getB()
                   .stream()
                   .filter(b -> b.getC()
                   .stream()
                   .filter(c -> c.getPeople)
                   .collect(Collectors.toList())

我很困惑......我可以使用 for 循环轻松做到这一点,但我听说流简单易行,我想开始更多地使用它们。


天涯尽头无女友
浏览 109回答 1
1回答

ibeautiful

你应该使用flatMap:List<String>&nbsp;newList&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;listA.stream()&nbsp;//&nbsp;Stream<A> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(a->a.getB().stream())&nbsp;//&nbsp;Stream<B> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(b->b.getC().stream())&nbsp;//&nbsp;Stream<C> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(c->c.gtPeople().stream())&nbsp;//&nbsp;Stream<String> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toList());&nbsp;//&nbsp;List<String>
随时随地看视频慕课网APP

相关分类

Java
我要回答