代码之家  ›  专栏  ›  技术社区  ›  lapots

将枚举的每个数组值映射到枚举值

  •  2
  • lapots  · 技术社区  · 6 年前

    我有一个这样的枚举

    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();
    

    但是如何绘制每一个 元素类型枚举 进入每个 ContainerEnum 钥匙?我想买这样的双鞋

    { ElementTypeEnum.TYPE_1, CONTAINER_1 },
    { ElementTypeEnum.TYPE_2, CONTAINER_1 },
    { ElementTypeEnum.TYPE_3, CONTAINER_2 },
    { ElementTypeEnum.TYPE_4, CONTAINER_2 }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Eugene    6 年前
    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() 存在。