【发布时间】:2014-09-16 19:18:34
【问题描述】:
我有以下型号:
public class WeightChange {
private float value;
public float getValue() {
return value;
}
public void setValue(float value) {
this.value = value;
}
}
和收藏:
private List<WeightChange> weightChanges;
我已经使用 Java 8 特性实现了获取平均权重值的函数:
public float getAvgChangedWeight() {
return (float) weightChanges.stream().mapToDouble(WeightChange::getValue).average().getAsDouble();
}
能否请您帮忙改进它,因为我认为强制转换为 double 不是一个好主意。
当weightChanges 集合为空时,它也会引发异常。在这种情况下如何改进它?
【问题讨论】:
-
“我不认为转换为 double 是一个好主意” - 以什么方式?你在担心什么?我觉得这完全合理。
-
@JonSkeet 我只是感觉到了 :) 另外,我还添加了一个案例 - 当 weightChanges 集合为空时它会引发异常。在这种情况下如何改进它?
-
根据经验,您应该始终使用
double进行计算。唯一应该使用float的时候是需要存储大量数字的时候。 -
使用
float(或short)的理由并不多。这可能就是 Java 8 设计者在设置新的流类和方法时忽略了这些的原因。
标签: java java-8 java-stream