2017-04-21 103 views
0

列出有一个简单的:Java的8个流回报的元素

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<List<Task>>。从map()到现有结果的最佳连接方式是什么?

+2

子任务有子任务吗? – Holger

+2

使用'flatMap(x - > x.getSubtasks()。stream())'而不是你的'map()' –

+1

@Holger好点,错过了它使用Task内部的Task。如果兔子的洞不会更深,那么重复应该做。 – Kayaman

回答

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