Я хочу перебирать коллекцию коллекций. С Guava я бы сделал это:Объединение коллекций с Java 8
import static com.google.collections.Iterables.*;
class Group {
private Collection<Person> persons;
public Collection<Person> getPersons();
}
class Person {
private String name;
public String getName();
}
Collection<Group> groups = ...;
Iterable<Person> persons = concat(transform(groups, Group::getPersons()));
Iterable<String> names = transform(persons, Person::getName);
Но как я могу сделать то же самое с потоками Java 8?
groups.stream().map(Group::getPersons())...?
Будет ли эта оценка по-прежнему ленивой? Если я хочу, например, узнать только имя первого человека? –
@PhilippJardas Да, * most * 'Stream' операции ленивы. Вы можете узнать больше о том, какие из них не ленивы в javadoc, например 'sorted()' не ленив. –
skiwi
Отлично, спасибо! Хотя есть несколько правильных ответов, я соглашусь с этим, потому что он был первым. :-) –