Java - 组合多个集合

car*_*era 3 java functional-programming java-8 java-stream

我有这段代码,我想使用更多的Java 8方法进行重构,但我知道有几个选项可以做到这一点:concat()Java 8 Stream API,flatMap()Java 8 Stream API,使用Guava,使用Apache Commons Collections,CompletableFuture ....我想知道是否有最好的做法来做到这一点

List<User> users = new ArrayList<User>();    
for (Restaurant restaurant : restaurants) { 
    users.addAll(userService.getClients(restaurant.getId())
                            .parallelStream()
                            .filter(us -> !alreadyNotifiedUserIds.contains(us.getId())))
                            .collect(Collectors.toList());  
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*era 5

像这样的东西?

List<User> users = restaurants.parallelStream()
    .flatMap(r -> userService.getClients(r.getId()).stream())
    .filter(us -> !alreadyNotifiedUserIds.contains(us.getId()))
    .collect(Collectors.toList());  
Run Code Online (Sandbox Code Playgroud)