浮动的Java 8流平均值

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)