Hi试图找出如何映射到EnumMap,但没有成功。目前,我正在用两个步骤完成它,我创建了地图,然后我将它变成了一个EnumMap。问题是。
发布于 2016-05-14 11:15:18
TL;DR:您需要使用 method。
默认情况下,toMap使用HashMap::new作为Supplier<Map> --您需要提供一个新的EnumMap。
final Map<CarBrand, CarsSellers> ret = input.values()
.stream()
.filter(brand -> brand != CarBrand.BMW)
.collect(toMap(
identity(),
brand -> new CarsSellers(immutableCars, this.carsDb.export(brand)),
(l, r) -> {
throw new IllegalArgumentException("Duplicate keys " + l + "and " + r + ".");
},
() -> new EnumMap<>(CarBrand.class)));论点如下:
key萃取器value萃取器Map中,另一个要添加。在这种情况下,我们只是抛出一个IllegalArgumentException,因为键应该是唯一的。EnumMap。关于您的代码的说明:
interface - Map而不是EnumMap的程序enum是单例的,所以您可以使用a != Enum.VALUEimport static的Function.identity()使事情变得不那么冗长。https://stackoverflow.com/questions/37225879
复制相似问题