我有一个温度类

class Temperature {
    double minTemp;
    double maxTemp;
    String city;
    String country;
}

我还有另一个类维持着温度集合
class Temperatures {
    List<Temperature> temperatures;
}

我想使用流按countryName将温度分组。

我想要的是
public Map<String, Temperatures> temperaturesByCountry()

但是我无法使用流获取“温度”作为 map 值,我得到的是“温度列表”。

我的groupingBy实现如下
Map<String, List<Temperature>> result = this.getTemperatures()
                .stream()
                .collect(Collectors.groupingBy(Temperature::getCountry));

我想获取Map<String, Temperatures>而不是Map<String, List<Temperature>>
我怎样才能做到这一点?

最佳答案

假设您有构造函数Temperatures(List<Temperature> temperatures)这应该可以解决问题:

Map<String, Temperatures> result =
       this.getTemperatures()
           .stream()
           .collect(groupingBy(Temperature::getCountry,
                               collectingAndThen(toList(), Temperatures::new)));

07-26 04:51