java—两个独立的流操作合并为一个

bq3bfh9z  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(306)

这个问题在这里已经有答案了

如何强制max返回java流中的所有最大值(7个答案)
上个月关门了。
是否有可能(甚至可行)将这两个流操作合并到一个单通道解决方案中?

int max = locations.stream()
        .map(location -> location.getAvailableScooters().size())
        .max(Comparator.naturalOrder())
        .orElse(-1);

return locations.stream()
        .filter(location -> location.getAvailableScooters().size() == max)
        .collect(Collectors.toSet());
sulc1iza

sulc1iza1#

我认为合并的唯一方式是这样的:

return locations.stream()
        .filter(location -> location.getAvailableScooters().size() == 
                 locations.stream()
                .map(location -> location.getAvailableScooters().size())
                .max(Comparator.naturalOrder())
                .orElse(-1) )
        .collect(Collectors.toSet());

这是一个更糟糕的解决方案
max和collect都是终端操作,因此无法合并

相关问题