Bic*_*ick 2 java-8 java-stream
可以说我有一个房间列表
List<Room> rooms;
Run Code Online (Sandbox Code Playgroud)
每个房间都有人员名单.
使用java8流我想迭代房间列表,获取所有人,在每个节点上执行一些方法(doSomething())并获得所有过滤对象的列表.
这是使用java 8的最佳实践吗?
List<Asset> pesonsList= new ArrayList<>();
for (Room room : rooms)
room.getPersonsList().stream()
.filter(person -> person.isTall())
.forEach(person -> {
doSomething(person);
pesonsList.add(person);
});
Run Code Online (Sandbox Code Playgroud)
你最好这样做:
List<Person> persons =
rooms.stream()
.flatMap(room -> room.getPersonsList().stream())
.filter(Person::isTall)
.peek(this::doSomething)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)