gpt4 book ai didi

Java 8 - 更新同一流代码中的两个属性

转载 作者:行者123 更新时间:2023-12-02 16:08:52 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以在 Stream lambda 代码中更新两次对象,我需要更新一个类的两个属性,我需要更新 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);

有没有一种方法可以实现我所需要的,而无需流式传输两次列表?

最佳答案

setValue 的返回类型是void 并且不是 HistoricDataModelParsed。因此,您不能调用 HistoricDataModelParsed 类中的方法 setRecordsCount

您可以在 HistoricDataModelParsed 中添加一个方法,该方法接受两个参数 valuerecordsCount:

public void setValueAndCount(Double value, int count) {
this.value = value;
this.recordsCount = count;
}

然后在orElse之后调用这个方法:

response.stream()
.filter(dateTime ->fromDate.equals(dateTime.getStartDate()))
.findAny()
.orElse(existingRecord)
.setValueAndCount(valueAdded, amount);

关于Java 8 - 更新同一流代码中的两个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596200/

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