如何使用stream / ifPresent对java.util.Set中的每个项目执行操作?

问题描述 投票:0回答:1

我对流/可选项有疑问。

我想对从查询中获取的一组项目执行删除操作:

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

但是我的IDE说:

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

我如何对集合中的每个项目执行操作?

java collections java-stream optional
1个回答
0
投票
providerRepository.findByUserId(user.getId()) .ifPresent(set -> set.forEach(providerRepository::delete));

或者,如果找不到任何内容,则获取一个空集合,然后迭代该集合:

providerRepository.findByUserId(user.getId())
    .orElse(Collections.emptySet())
    .forEach(providerRepository::delete);
© www.soinside.com 2019 - 2024. All rights reserved.