【问题标题】:Java 8 stream returns list from element [duplicate]Java 8流从元素返回列表[重复]
【发布时间】:2017-04-21 09:45:31
【问题描述】:

有一个简单的:

public class Task{
   private String name;
   private List<Task> subtasks;
}

Task 对象的列表。如何使用stream() 将每个Task 的列表作为subtask 获取。 我试过这个:

List<Task> subtasks = myTask.stream().map(x -> x.getSubtasks()).collect(Collectors.toList());

但它返回List&lt;List&lt;Task&gt;&gt;。将数组从map() 加入到现有结果的最佳方法是什么?

【问题讨论】:

  • 子任务可以有子任务吗?
  • 使用flatMap(x -&gt; x.getSubtasks().stream()) 而不是你的map()
  • @Holger 好点,错过了它在Task 中使用Task。如果兔子洞没有更深,那个副本应该可以。
  • @Kayaman:我为递归情况添加了另一个......

标签: java java-8


【解决方案1】:
    List<Task> subtasks = myTask.stream()
            .flatMap(x -> x.getSubtasks().stream())
            .collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多