首页 > 解决方案 > Java Streams API:如何在整个列表结果的流内部执行操作?

问题描述

有没有办法使用流结果(List<Integer>在我的情况下)在该列表上的函数内执行操作(一次全部)

所以代替这个:

var cardTypesToRemove = existingIds.stream()
                .filter(c -> !cardTypeIds.contains(c))
                .collect(Collectors.toList());

repository.deleteBy(cardTypesToRemove);

像这样的东西(请原谅我的伪代码)

var cardTypesToRemove = existingIds.stream()
                .filter(c -> !cardTypeIds.contains(c))
                .collect(Collectors.collectingAndThen(repository.saveAll(resultList)));

标签: javajava-stream

解决方案


不,只需将 的结果collect作为常规方法参数传递即可。

var cardTypesToRemove = repository.saveAll(
    existingIds.stream()
        .filter(c -> !cardTypeIds.contains(c))
        .collect(Collectors.toList());

推荐阅读