【发布时间】:2021-07-30 19:25:54
【问题描述】:
我想知道是否有一种方法可以在 Stream lambda 代码中更新两次对象,我需要更新一个类的两个属性,我需要更新 value 和 recordsCount属性
对象:
public class HistoricDataModelParsed {
private Date startDate;
private Date endDate;
private Double value;
private int recordsCount;
}
我试着做这样的事情:
val existingRecord = response.stream()
.filter(dateTime ->fromDate.equals(dateTime.getStartDate()))
.findAny()
.orElse(null);
response.stream()
.filter(dateTime ->fromDate.equals(dateTime.getStartDate()))
.findAny()
.orElse(existingRecord)
.setValue(valueAdded)
.setRecordsCount(amount);
但我收到了这个错误:“无法在原始类型 void 上调用 setRecordsCount(int)”
所以我最终做了两次流来更新我需要的两个字段中的每一个
response.stream()
.filter(dateTime ->fromDate.equals(dateTime.getStartDate()))
.findAny()
.orElse(existingRecord)
.setValue(valueAdded);
response.stream()
.filter(dateTime ->fromDate.equals(dateTime.getStartDate()))
.findAny()
.orElse(existingRecord)
.setRecordsCount(amount);
有没有一种方法可以实现我所需要的而不需要流两次列表?
【问题讨论】:
-
你不应该使用
Date。 -
existingRecord 到底是什么?
-
@MCEmperor 你能详细说明原因吗?
-
@MohamedAneesA 更新了问题以添加该变量是什么
-
@xThunder 当然。 Here is something。此外,新的 API(在
java.time包中)更加完整,因为它还 models concepts 在旧 API 中不可用,如周期和持续时间。
标签: java java-8 java-stream