【问题标题】:Java Streams and List of List of List [duplicate]Java Streams和List of List [重复]
【发布时间】:2019-06-29 05:20:56
【问题描述】:

由于某种原因,我不知道如何使用流将这个深度嵌套的列表变成一个新列表。

   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 循环轻松做到这一点,但我听说流简单易行,我想开始更多地使用它们。

【问题讨论】:

标签: java java-stream


【解决方案1】:

你应该使用flatMap:

List<String> newList =
    listA.stream() // Stream<A>
         .flatMap(a->a.getB().stream()) // Stream<B>
         .flatMap(b->b.getC().stream()) // Stream<C>
         .flatMap(c->c.gtPeople().stream()) // Stream<String>
         .collect(Collectors.toList()); // List<String>

【讨论】:

  • 小崽子,当然。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多