我有一个看起来像这样的枚举
public enum ContainerEnum {
CONTAINER_1(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_1,
ElementTypeEnum.TYPE_2
}),
CONTAINER_2(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_3,
ElementTypeEnum.TYPE_4
});
....
}
每个ElementTypeEnum
元素的所有Container
项目都是唯一的。
现在我有一系列可能的容器
ContainerEnum[] containers = ContainerEnum.values();
但是如何将每个ElementTypeEnum
项映射到每个ContainerEnum
键?我的意思是得到这样的对
{ ElementTypeEnum.TYPE_1, CONTAINER_1 },
{ ElementTypeEnum.TYPE_2, CONTAINER_1 },
{ ElementTypeEnum.TYPE_3, CONTAINER_2 },
{ ElementTypeEnum.TYPE_4, CONTAINER_2 }
答案 0 :(得分:4)
@Component
假设存在类似吸气剂EnumSet.allOf(ContainerEnum.class)
.stream()
.flatMap(x -> Arrays.stream(x.getElementTypeEnums()).map(y -> new SimpleEntry<>(x, y)))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
的东西。