java 迭代到对象列表并在计算平均值后添加到HashMap

ojsjcaue  于 2022-12-02  发布在  Java
关注(0)|答案(2)|浏览(105)

我需要创建一个函数

Map<Category, Double> averagePricePerCategory

它接收List<Buildings> buildings作为对象的参数,这些对象具有:

private int price;
private String neighborhood;
private Category category;

我需要得到每一个的价格,计算平均值,并返回一个Map,其中包含它们各自的类别和平均价格。我真的很难理解我如何才能做到这一点。
到目前为止,我被困在下一步该做什么,它应该如何喜欢。

static Map<Category, Double> averagePricePerCategory(List<Building> buildings) {
    Map<String, Double> averagePriceCategory = new HashMap<>();
    Category x = buildings.get(0).getCategory();
    if(buildings.isEmpty()){
        return new HashMap<>();
    }else{
        for(Building b: buildings){

        }
    }
    return null;
}
xzlaal3s

xzlaal3s1#

如果我理解了你的问题的要点,那么使用流API,你可以使用如下代码:

static Map<Category, Double> averagePricePerCategory(List<Building> buildings) {
        return buildings.stream().collect(Collectors.groupingBy(Building::getCategory, Collectors.averagingDouble(Building::getPrice)));
    }

您可以在此处找到更多关于使用流API分组的示例:https://www.baeldung.com/java-groupingby-collector

5sxhfpxr

5sxhfpxr2#

要从数值列表中生成性能平均解,请保留两个变量:它们的和,它们的计数,然后avg = sum/count
由于我们需要为每个类别进行此操作,因此需要一个分组步骤,一个想法是为每个类别制作价格列表,但这将消耗内存,因此我们坚持每个类别的sumcount的第一个想法
第一个

相关问题