2017-01-25 24 views
2

私はオブジェクトの連絡先のセットを持つクラスPersonを持っています。人の流れから連絡先のストリームを取得したい。ストリーム<Object>の代わりに<Set<Object>>

public class Persons{ 
    private Set<Contact> contacts; 
} 

persons.stream().map(Person::getContacts); 

が私をStream<Set<Contact>>与え、私は、Java 8とストリームに非常に新しいですとかなりStream<Contact>

任意の提案やヘルプをいただければ幸いです。

+0

なぜこれをやりたいですか? 'Stream 'を取得すると、各連絡先が誰に属するのか分かりません。 –

答えて

1

あなたはこれを試すことがあります。

Stream<Contact> contacts = persons.stream().flatMap(p -> p.getContacts().stream()); 

かのことを:

Stream<Contact> contacts = persons.stream().map(Person::getContacts).flatMap(Set::stream); 

チェックthis優れた糸を使用すると、mapflatMapの違いを理解できるように。

1

Stream#mapの代わりにStream#flatMapを使用すると、これを実現できます。 JavaDocは、ファイルから各行内の単語リストへの行のリストを平坦化する例を示しています。ドメインモデルPersonContactに同じ手法を適用できます。

関連する問題