gpt4 book ai didi

java - 使用java8流来防止重复代码

转载 作者:行者123 更新时间:2023-12-01 20:27:44 24 4
gpt4 key购买 nike

我有这个对象列表和

class ResultDto {
private Integer field1;
private Integer field2;
...etc
}

我想创建 2 个 ResultDto 对象。第一个包含 List 中所有 field1 的最大值,第二个包含 List 中所有 field1 的平均值。field2 也是如此。

List<ResultDto>                          ResultDto
resultDto1 resultDto2 => resultDto
field1 field1 => field1=max(field1, field2)
field2 field2 => field2=average(field1,field2)

我在 ResultDto (35) 中有很多字段。

最好的方法是什么?在流或老式java中现在我做这样的事情:

for (GetResultDto result : resultDtoList){

moyValues.setMeanSpeed(moyValues.getMeanSpeed() != null ? moyValues.getMeanSpeed() + result.getMeanSpeed(): result.getMeanSpeed()) ;
if(minValues.getMeanSpeed() == null) {minValues.setMeanSpeed(result.getMeanSpeed());}
if(result.getMeanSpeed() > minValues.getMeanSpeed()) {minValues.setMeanSpeed(result.getMeanSpeed());}
if(maxValues.getMeanSpeed() == null) {maxValues.setMeanSpeed(result.getMeanSpeed());}
if(result.getMeanSpeed() > maxValues.getMeanSpeed()) {maxValues.setMeanSpeed(result.getMeanSpeed());}

moyValues.setMaxSpeed(moyValues.getMaxSpeed() != null ? moyValues.getMaxSpeed() + result.getMaxSpeed() : result.getMaxSpeed()) ;
if(minValues.getMaxSpeed() == null) {minValues.setMaxSpeed(result.getMaxSpeed());}
if(result.getMaxSpeed() < minValues.getMaxSpeed()) {minValues.setMaxSpeed(result.getMaxSpeed());}
if(maxValues.getMaxSpeed() == null) {maxValues.setMaxSpeed(result.getMaxSpeed());}
if(result.getMaxSpeed() > maxValues.getMaxSpeed()) {maxValues.setMaxSpeed(result.getMaxSpeed());}

提前感谢您的帮助

最佳答案

也许是这样的?

private static final List<ResultDto> results = new ArrayList<>(Arrays.asList(
new ResultDto(1, 2),
new ResultDto(3, 4)
));

public static void main(String[] args) {
ResultDto resultDto1 = toResultDto(
results.stream().collect(summarizingInt(dto -> dto.filed1)));
ResultDto resultDto2 = toResultDto(
results.stream().collect(summarizingInt(dto -> dto.filed2)));
}

private static ResultDto toResultDto(IntSummaryStatistics statistics) {
return new ResultDto(statistics.getMax(), (int) statistics.getAverage());
}

关于java - 使用java8流来防止重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43654242/

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