首页 > 解决方案 > Java – 组合多个集合

问题描述

我有这段代码,我想使用更多的 Java 8 方法进行重构,但我知道有几个选项可以做到这一点: concat() Java 8 Stream API , flatMap() Java 8 Stream API , Using 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());  
}

标签: javajava-8functional-programmingjava-stream

解决方案


像这样的东西?

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

推荐阅读