2017-04-21 7 views
0

からリスト:のJava 8のストリームを返しますが、単にある要素

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

Taskオブジェクトのリスト。 Taskのリストをstream()を使用してsubtaskとしてどのように取得することができますか?

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

が、それはList<List<Task>>を返します。 私はこの1つを試してみました。アレイをmap()から既存の結果に結合する最良の方法は何ですか?

+2

サブタスクにサブタスクがありますか? – Holger

+2

あなたの 'map()'の代わりに 'flatMap(x - > x.getSubtasks()。stream())'を使用してください。 –

+1

@Holger良い点は、 'Task'の中で' Task'を使っていません。ウサギの穴が深くならない場合は、複製が必要です。 – Kayaman

答えて

2
List<Task> subtasks = myTask.stream() 
      .flatMap(x -> x.getSubtasks().stream()) 
      .collect(Collectors.toList()); 
関連する問題