我有一个具有一组对象联系人的类。我想从人员流中获得一串联系人。
public class Persons{
private Set<Contact> contacts;
}
persons.stream().map(Person::getContacts);
给了我Stream<Set<Contact>>
而不是Stream<Contact>
任何建议或帮助都会受到赞赏,因为我对Java 8和Streams都很陌生。
答案 0 :(得分:1)
您可以使用Stream#flatMap
代替Stream#map
来实现此目的。 JavaDoc显示了将文件列表从文件展平为每行内单词列表的示例。您可以将相同的技术应用于Person
和Contact
的域模型。
答案 1 :(得分:1)
你可以试试这个:
Stream<Contact> contacts = persons.stream().flatMap(p -> p.getContacts().stream());
或那:
Stream<Contact> contacts = persons.stream().map(Person::getContacts).flatMap(Set::stream);
检查this优秀帖子,以便了解map
和flatMap
之间的区别。