ale*_*oid 16 java java-8 java-stream
我有以下型号:
public class WeightChange {
private float value;
public float getValue() {
return value;
}
public void setValue(float value) {
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
和收藏:
private List<WeightChange> weightChanges;
Run Code Online (Sandbox Code Playgroud)
我已经实现了使用Java 8功能获得平均权重值的函数:
public float getAvgChangedWeight() {
return (float) weightChanges.stream().mapToDouble(WeightChange::getValue).average().getAsDouble();
}
Run Code Online (Sandbox Code Playgroud)
你能不能帮助改进它,因为我不认为铸造加倍是一个好主意.
当weightChanges集合为空时,它也会抛出异常.在这种情况下如何改进它?
Mis*_*sha 48
要回答问题的第二部分,如果要在列表为空并且返回某个double值时避免异常,请使用orElse而不是getAsDouble:
return weightChanges.stream()
.mapToDouble(WeightChange::getValue)
.average()
.orElse(Double.NAN);
Run Code Online (Sandbox Code Playgroud)