我有一个类Person,它有一组对象联系人。我想从人流中获得一个联系人流。
public class Persons{
private Set<Contact> contacts;
}
persons.stream().map(Person::getContacts);给我一个Stream<Set<Contact>>而不是一个Stream<Contact>
任何建议或帮助都将不胜感激,因为我对Java8和Streams还很陌生。
发布于 2017-01-26 03:16:32
你可以试试这个:
Stream<Contact> contacts = persons.stream().flatMap(p -> p.getContacts().stream());或者说:
Stream<Contact> contacts = persons.stream().map(Person::getContacts).flatMap(Set::stream);查看this优秀线程,这样您就可以了解map和flatMap之间的区别。
发布于 2017-01-26 03:13:37
您可以通过使用Stream#flatMap而不是Stream#map来实现此目的。JavaDoc显示了一个示例,该示例将文件中的行列表展平为每行中的单词列表。您可以将相同的技术应用于您的Person和Contact域模型。
https://stackoverflow.com/questions/41857541
复制相似问题