【发布时间】:2017-09-25 00:57:22
【问题描述】:
我有这个对象列表 和
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());}
提前感谢您的帮助
【问题讨论】:
-
流在这里有什么帮助?通过提取一些处理逻辑的方法,您可以使您的代码更加清晰。使用三元运算符只会让它看起来很糟糕。
-
在流中,使用 IntSummaryStatistics
-
你真的有 35 个独立的 Integer 字段吗?为什么不使用整数数组作为单个字段?
标签: java java-8 duplicates java-stream