gpt4 book ai didi

以对象为键的 Java 8 流分组对象字段

转载 作者:搜寻专家 更新时间:2023-11-01 02:19:17 25 4
gpt4 key购买 nike

我有以下类结构(给出的例子没有意义,我只是为了问题的目的而做的):

public class ManufacturerDto {
private String name;
private Boolean withConfirmation;

//getters and setters omitted for brevity
}

public class CarDto {

private ManufacturerDto manufacturer;

//getters and setters omitted for brevity
}

public abstract class VehicleDto {

private list<CarDto> cars = new ArrayList<>();

//getters and setters omitted for brevity
}

public class EuropeanMarketCarDto extends VehicleDto {

public Map<String, List<CarDto>> getCarManufacturerToCarsMap() {

return this.getCarDtos()
.stream()
.collect(Collectors.groupingBy(e -> e.manufacturer().getName()));

//getters and setters omitted for brevity
}
}

在给定的场景中,groupingBy返回几乎所有我想要的东西,但我的 key 有问题。在 getCarManufacturerToCarsMap()方法我想要一个manufacturer对象作为键,但我什至不确定是否可以使用 groupingBy .我能做什么,返回 Map<Manufacturer, List<CarDto>> 的 map ?

最佳答案

如果你真的想避免将映射键设置为 StringMap<String, List<CarDto>>取而代之的是 Map<Manufacturer, List<CarDto>>您可以按如下方式分组:

this.getCarDtos()
.stream()
.collect(Collectors.groupingBy(e -> e.getManufacturer()));

请注意,这需要您覆盖 equalshashcode Manufacturer 中的方法定义两个给定对象相等的类,如果它们具有相同的名称。

关于以对象为键的 Java 8 流分组对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53692720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com