Java- 哈希图 - 数据分组

Java- Hash Map - Data Grouping

有没有办法我们可以按照下面的输出对它进行分组

输入数据json

    [

 {
    'Car': 'BWM',
    'Country': 'Germany',
    'Amount': 13469,
    'Dateof Purchase':20-08-2020
    
 },
 {
    'Car': 'Audi',
    'Country': 'Germany',
    'Amount': 14469,
    'Dateof Purchase':10-01-2020

 }
 {
    'Car': 'Telsa',
    'Country': 'American',
    'Amount': 11449,
    'Dateof Purchase':15-12-2020

 }
]

输出

Germany -27938  <-- Total Amount
    BWM : 13469 
    Audi: 14469

American-11449 <-- Total Amount
    Telsa 11449

我尝试使用以下代码,但只能获得汽车国家总数

        Map<String, Integer> Total_Vech = listData.stream()
            .collect(Collectors.groupingBy(Vech::getbycountry,
                    Collectors.summingInt(Vech::getsAmount)));

任何帮助都会有帮助!!!

您需要自定义数据结构:

class CountryStats {
    private int amount;
    private Map<String, Integer> cars = new HashMap<>();

    void addCar(String car, int amount) {
        this.amount += amount;
        this.cars.merge(car, amount, Integer::sum);
    }

    CountryStats merge(CountryStats country) {
        country.cars.forEach(this::addCar);
        return this;
    }
}

然后你可以这样收集:

Map<String, CountryStats> statsByCountry = data.stream().collect(
        Collectors.groupingBy(data -> data.getCountry(), Collector.of(
                CountryStats::new,
                (stats, data) -> stats.addCar(data.getCar(), data.getAmount()),
                CountryStats::merge)));