Java Streams API: как выполнить операцию внутри потока по всему результату списка? - PullRequest
0 голосов
/ 27 февраля 2020

Есть ли способ использовать результат потока (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)));

1 Ответ

0 голосов
/ 27 февраля 2020

Нет. Просто передайте результат collect как обычный параметр метода.

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