2017-11-18 14 views
3

指定されたプロジェクトのリストに属するコンポーネントの一覧を取得しようとしています。Javaストリームを使用してリスト内の要素に属する要素のリストを取得する

ストリームで作業を開始しているので、これを行う方法を理解できません。 Project.getComponents()以来

projects.stream() 
     .map(p -> p.getComponents()) 
     .collect(Collectors.toList()); 

前のコードは、私がList<ProjectComponent>私はこれをどのように行うことができますを返すように望んでいたがList<Collection<ProjectComponent>>を返しますCollection<ProjectComponent>を返しますか?

親切にしてください。

答えて

9

使用flatMap

projects.stream() 
     .flatMap(p -> p.getComponents().stream()) 
     .collect(Collectors.toList()); 

flatMapは、基本的にあなたがList<ProjectComponent>にストリーム要素を集め、その場合にはStream<Stream<R>>からStream<R>にネストされたストリームすなわちを平らにします。

+1

それは魅力のように動作します。 本当に素敵な、ありがとう;) –

+0

ジャック、plsマーク有効として回答 –

+0

完了!私はそのheheを行う方法を理解しようとしていた –

関連する問題