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

如何使用stream/ifPresent对java.util.Set中的每个项执行操作?,java,collections,java-stream,optional,Java,Collections,Java Stream,Optional,我有一个关于streams/optionals的问题 我想对查询中提取的一组项目执行删除操作: providerRepository.findByUserId(user.getId()).ifPresent(providerRepository::delete); 但我的IDE说: Incompatible types: Set<AuthenticationProvider> is not convertible to AuthenticationProvider 不兼容类型:集

我有一个关于streams/optionals的问题

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

providerRepository.findByUserId(user.getId()).ifPresent(providerRepository::delete);
但我的IDE说:

Incompatible types: Set<AuthenticationProvider> is not convertible to AuthenticationProvider
不兼容类型:集合不能转换为AuthenticationProvider

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

在您的
ifPresent
中迭代:

providerRepository.findByUserId(user.getId())
    .ifPresent(set -> set.forEach(providerRepository::delete));
或者,如果找不到任何内容,则获取一个空集,然后迭代该集:

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

这个系列适合哪一个地方?请提供一个最小的、可重复的示例:能否显示
providerRepository::delete
方法定义?显示findByUserId方法的定义。特别有趣的是它返回的内容:单个对象、列表、集合?