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

标签 java collections java-stream option-type

我有一个关于流/可选的问题。

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

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

但是我的 IDE 说:

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

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

最佳答案

ifPresent 中迭代:

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

或者,在没有找到任何内容的情况下获取一个空集合,然后迭代该集合:

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

关于java - 如何使用stream/ifPresent对java.util.Set中的每个项目执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59632716/

相关文章:

java - 使用 Google Play 游戏进行 Firebase 身份验证

java - 无法使用 Java 通过 CLI 命令创建 Google 云数据流模板

java - 在过滤器 findAny 之前, map 是否应用于所有列表?

java - 我应该使用什么类型的阻塞队列?

java - 在 Java 8 Lambda-Stream 中使用字符串数组作为值并使用 Enum 作为键创建 Hashmap

java - 选择列表的元素直到满足 Java 8 Lambdas 的条件

java - 如何在 glassfish 上将所有 HTTP 请求重定向到 HTTPS

java - 布局JScrollPane时什么时候调用getPreferredScrollableViewportSize()?

list - List.subList和Kotlin中的slice之间的区别

vb.net - 如何在 VB.NET 中按字母顺序对通用列表(字符串)进行排序?