2017-04-21 51 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());