Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将枚举的每个数组值映射到枚举值_Java_Java 8 - Fatal编程技术网

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对于您的具体示例,没有什么区别。