首页 > 解决方案 > 将枚举的每个数组值映射到枚举值

问题描述

我有看起来像这样的枚举

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 }

标签: javajava-8

解决方案


EnumSet.allOf(ContainerEnum.class)
       .stream()
       .flatMap(x -> Arrays.stream(x.getElementTypeEnums()).map(y -> new SimpleEntry<>(x, y)))
       .collect(Collectors.toMap(Entry::getKey, Entry::getValue));

假设存在类似吸气剂的东西getElementTypeEnums()


推荐阅读