Как выполнить операцию с каждым элементом в java .util.Set, используя stream / ifPresent? - PullRequest
0 голосов
/ 07 января 2020

У меня есть вопрос о потоках / опциях.

Я хочу выполнить операцию удаления для набора элементов, извлеченных в запросе:

providerRepository.findByUserId(user.getId()).ifPresent(providerRepository::delete);

Но моя среда IDE говорит:

Incompatible types: Set<AuthenticationProvider> is not convertible to AuthenticationProvider

Как выполнить операцию для каждого отдельного элемента в коллекции?

1 Ответ

2 голосов
/ 07 января 2020

Выполните итерацию в вашем ifPresent:

providerRepository.findByUserId(user.getId())
    .ifPresent(set -> set.forEach(providerRepository::delete));

Или получите пустой набор в случае, если ничего не найдено, а затем выполните итерацию набора:

providerRepository.findByUserId(user.getId())
    .orElse(Collections.emptySet())
    .forEach(providerRepository::delete);
...