Phi*_*das 6 java guava java-8 java-stream
我想迭代一系列集合.有了番石榴,我会这样做:
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);
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用Java 8流做同样的事情呢?
groups.stream().map(Group::getPersons())...?
Run Code Online (Sandbox Code Playgroud)
Stream<Person> persons = groups.stream().flatMap(g -> g.getPersons().stream());
Run Code Online (Sandbox Code Playgroud)
您可以通过将流的所有元素平面映射到流中来实现此目的.
让我用这段代码解释一下:
groups.stream()
.flatMap(group -> group.getPersons().stream());
Run Code Online (Sandbox Code Playgroud)
你在这里做的是:
Stream<Collection<Group>>.Stream<Person>从a Group返回到原始流中,该流是类型的Stream<Person>.在此之后flatMap(),您可以随意获得所需的任何内容Stream<Person>.
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |