带有副作用的 Java 流映射和收集或 foreach 并填充结果列表

标签 java foreach java-8 java-stream map-function

我有一段代码看起来像这样。

我读过两条关于此的相互矛盾的(?)“规则”。

我该如何解决它以便我使用流并仍然返回一个列表,或者我应该跳过流?

@Transactional
public Collection<Thing> save(Collection<Thing> things) {
    return things.stream().map(this::save).collect(Collectors.toList());
}

@Transactional
public Thing save(Thing thing) {
    // org.springframework.data.repository.CrudRepository.save 
    // Saves a given entity. Use the returned instance for further operations as the save operation might have changed the entity instance completely.
    Thing saved = thingRepo.save(thing);
    return saved;
}

最佳答案

那篇论文不是说共享可变状态吗?在您的情况下,如果您在方法内声明列表然后使用 forEach,一切都很好。第二个回答here确切地提到你正在尝试做什么。

关于带有副作用的 Java 流映射和收集或 foreach 并填充结果列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951942/

相关文章:

java - 尝试添加 ListView 但在我尝试设置适配器时不断收到 NPE

scala - 如何在 Scala 中使用 foreach 循环来改变对象?

php - 使用 foreach 循环进行搜索不返回第一个匹配项

lambda - 对流的 groupBy 结果应用操作

java - 未找到 SSLSocket; Spring Roo 1.2.5、STS 3.6、SQLServer 驱动程序无法从 Class<AnyClassPK> 转换为 Class<?扩展可序列化>

java - 在 Java/Android 中高效地过滤 ArrayList

java - 使用多线程将文本文件拆分为Java中的 block

java - 停止我的 TCP 服务器 java 时抛出 SocketException

powershell - 防止在 Powershell 脚本中多次写入输出

testing - 使用 Cucumber 和 JAVA8 截取特定页面的屏幕截图