Java 将枚举的每个数组值映射到枚举值
我有一个像这样的枚举Java 将枚举的每个数组值映射到枚举值,java,java-8,Java,Java 8,我有一个像这样的枚举 public enum ContainerEnum { CONTAINER_1(new ElementTypeEnum[] { ElementTypeEnum.TYPE_1, ElementTypeEnum.TYPE_2 }), CONTAINER_2(new ElementTypeEnum[] { ElementTypeEnum.TYPE_3, ElementTypeEnum.TYPE
public enum ContainerEnum {
CONTAINER_1(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_1,
ElementTypeEnum.TYPE_2
}),
CONTAINER_2(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_3,
ElementTypeEnum.TYPE_4
});
....
}
{ ElementTypeEnum.TYPE_1, CONTAINER_1 },
{ ElementTypeEnum.TYPE_2, CONTAINER_1 },
{ ElementTypeEnum.TYPE_3, CONTAINER_2 },
{ ElementTypeEnum.TYPE_4, CONTAINER_2 }
对于每个容器
元素,所有元素类型枚举
项都是唯一的
现在我有了一系列可能的容器
ContainerEnum[] containers = ContainerEnum.values();
但是如何将每个ElementTypeEnum
条目映射到每个ContainerEnum
键?我想买一双这样的
public enum ContainerEnum {
CONTAINER_1(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_1,
ElementTypeEnum.TYPE_2
}),
CONTAINER_2(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_3,
ElementTypeEnum.TYPE_4
});
....
}
{ ElementTypeEnum.TYPE_1, CONTAINER_1 },
{ ElementTypeEnum.TYPE_2, CONTAINER_1 },
{ ElementTypeEnum.TYPE_3, CONTAINER_2 },
{ ElementTypeEnum.TYPE_4, CONTAINER_2 }
EnumSet.allOf(ContainerEnum.class)
.stream()
.flatMap(x->Arrays.stream(x.getElementTypeEnums()).map(y->newSimpleEntry(x,y)))
.collect(Collectors.toMap(条目::getKey,条目::getValue));
假设存在类似getter的东西
getElementTypeEnums()
。EnumSet.allOf和Arrays.stream(enum.values())
?@lapots对于您的具体示例,没有什么区别。