Java 8 flux moyen pour flotteur


J'ai le modèle suivant:

public class WeightChange {

    private float value;

    public float getValue() {
        return value;
    }

    public void setValue(float value) {
        this.value = value;
    }

}

Et collection:

private List<WeightChange> weightChanges;

J'ai implémenté une fonction qui obtient une valeur de poids moyenne en utilisant les fonctionnalités Java 8:

public float getAvgChangedWeight() {
    return (float) weightChanges.stream().mapToDouble(WeightChange::getValue).average().getAsDouble();      
}

Pourriez-vous aider à l'améliorer parce que je ne pense pas que le casting en double soit une bonne idée.

Il lève également une exception lorsque la collection weightChanges est vide. Comment fait-on l'améliorer dans ce cas?

Author: Stuart Marks, 2014-09-16

1 answers

Pour répondre à la deuxième partie de votre question, si vous voulez éviter l'exception lorsque la liste est vide et renvoyer une valeur double, utilisez orElse au lieu de getAsDouble:

return weightChanges.stream()
    .mapToDouble(WeightChange::getValue)
    .average()
    .orElse(Double.NAN);
 23
Author: Misha, 2014-09-16 20:26:54