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

时间:2018-08-03 12:25:34

标签: 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_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 }

1 个答案:

答案 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)); 的东西。