Java Streams 和 List of List 的列表

标签 java java-stream

<分区>

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

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

最佳答案

你应该使用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>

关于Java Streams 和 List of List 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533578/

相关文章:

java - 可选字段流返回值

java - 加载属性文件

java - 将流分配给变量 : Okay or Not?

java - Web 应用程序 java 中的配置属性

java - 无法在项目 mongo-demo 上执行目标 io.thorntail :thorntail-maven-plugin:2. 2.0.Final:package (default)

java - 我应该尽可能使用并行流吗?

java - Java Stream API 是如何选择执行计划的?

Java 按子类型对对象进行分组

java - Spring Rabbit消息消费,payload格式错误

java - mysql 与 java 的连接....我很困惑