流<设定的<object>&GT;而不是Stream <object>

时间:2017-01-25 17:11:10

标签: java java-8 java-stream

我有一个具有一组对象联系人的类。我想从人员流中获得一串联系人。

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

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

给了我Stream<Set<Contact>>而不是Stream<Contact>

任何建议或帮助都会受到赞赏,因为我对Java 8和Streams都很陌生。

2 个答案:

答案 0 :(得分:1)

您可以使用Stream#flatMap代替Stream#map来实现此目的。 JavaDoc显示了将文件列表从文件展平为每行内单词列表的示例。您可以将相同的技术应用于PersonContact的域模型。

答案 1 :(得分:1)

你可以试试这个:

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

或那:

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

检查this优秀帖子,以便了解mapflatMap之间的区别。