gpt4 book ai didi

java - 在流管道中保存到数据库

转载 作者:行者123 更新时间:2023-12-01 09:54:23 25 4
gpt4 key购买 nike

根据 the documentation on Oracle's website :

Side-effects in behavioral parameters to stream operations are, in general, discouraged, as they can often lead to unwitting violations of the statelessness requirement, as well as other thread-safety hazards.



这是否包括将流的元素保存到数据库?

想象一下以下(伪)代码:

public SavedCar saveCar(Car car) {
SavedCar savedCar = this.getDb().save(car);
return savedCar;
}

public List<SavedCars> saveCars(List<Car> cars) {
return cars.stream()
.map(this::saveCar)
.collect(Collectors.toList());
}

与此实现相反的不良影响是什么:

public SavedCar saveCar(Car car) {
SavedCar savedCar = this.getDb().save(car);
return savedCar;
}

public List<SavedCars> saveCars(List<Car> cars) {
List<SavedCars> savedCars = new ArrayList<>();
for (Cat car : cars) {
savedCars.add(this.saveCar(car));
}
return savedCars.
}

最佳答案

最简单的例子是:

cars.stream()
.map(this:saveCar)
.count()

在这种情况下,从 java-9 开始, map不会被执行;因为您不需要它来了解 count ,根本。

在其他多种情况下,副作用会给您带来很多痛苦;在一定条件下。

关于java - 在流管道中保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com