首页 > 解决方案 > Java:当我有一组对象时,有没有一种简单的方法来获得平均值?

问题描述

所以假设我有一个简单的对象:

public class Items {
    private static int 
        numItems,
        itemsInStock,
        itemsSold,
        //...
}

在代码的其他地方我有一个ArrayList<Items>

如果有一种简单的方法可以获得 numItems / ItemsInStock 等的平均值/中位数,而无需对对象的每个字段执行 for/each?

当前代码如下所示:

for (Items item: allItems) {
    if (item.field != null) { 
        temp += item.field;
    }
}
fieldAvg = temp / allItems.size();

标签: javacollectionsaverage

解决方案


可以说使用流会更优雅:

double avg = allItems.stream().mapToInt(i -> i.itemsInStock).average().getAsDouble();
// Or any other field -------------------------^

推荐阅读