【问题标题】:How to get sum of List element by group如何按组获取列表元素的总和
【发布时间】:2022-07-06 03:57:02
【问题描述】:

我有汽车列表 。我需要在名为 sumOfPrice 的方法中创建一些逻辑,但我不知道该怎么做。请帮助或提供一些建议。

//file Car.class
class Car {
    private String name;
    private double price;
    public Car (String name, double price){
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public double getPrice(){
        return price;
    }
}


//file Main.class
public class MainClass {
    public static void main(String[] args) {
        Map<String, Double> sumList = new HashMap<>();
        Map<String, Double> carList = new HashMap<>();
        carList.put("BMW X5", 35000.00);
        carList.put("BMW X5", 33000.00);
        carList.put("BMW X3", 30000.00);
        carList.put("BMW X3", 29000.00);

        sumList = sumOfPrice(carList);

//print my list  
        for (String i : sumList.keySet()) {
            System.out.println(i + " " + sumList.get(i));
        }
    }
    public Map<String, Double> sumOfPrice(List<Car> cars) {
        Map<String, Double> sum = new HashMap<String, Double>();
        for (Car car : cars) {
            //logic TODO:
        }
        return sum;
    }
}

乘车如何获取价格总和?输出必须按汽车名称(型号)分组。

输出必须是这样的:

宝马 X5 68000

宝马 X3 59000

【问题讨论】:

  • 您对此有何疑问?
  • 酷!它; s 可能最好为此编写一些代码。并阅读How to Ask
  • 抱歉我的描述,我更正了

标签: java


【解决方案1】:
  1. map 是一种(键值格式),键总是唯一的。
  2. 如果这是一种存储车辆的方式,我建议创建一个车辆类别并添加类型和价格。然后将车辆保存在 HashSet 中。
  3. 如果你使用HashSet,那么就很简单了:
HashMap<String, Integer> carsPrice = new HashMap<>();
cars.forEach(car -> {
    if (carsPrice.containsKey(car.name)) carsPrice.put(car.name, car.price + carsPrice.get(car.name));
    else carsPrice.put(car.name, car.price);
});

【讨论】:

    猜你喜欢
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多