Reputation: 13395
I've got enum that looks like this
public enum ContainerEnum {
CONTAINER_1(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_1,
ElementTypeEnum.TYPE_2
}),
CONTAINER_2(new ElementTypeEnum[] {
ElementTypeEnum.TYPE_3,
ElementTypeEnum.TYPE_4
});
....
}
All ElementTypeEnum
items are unique for each Container
element.
Now I have an array of possible containers
ContainerEnum[] containers = ContainerEnum.values();
But how to map each ElementTypeEnum
entry to each ContainerEnum
key? I mean to get pairs like this
{ ElementTypeEnum.TYPE_1, CONTAINER_1 },
{ ElementTypeEnum.TYPE_2, CONTAINER_1 },
{ ElementTypeEnum.TYPE_3, CONTAINER_2 },
{ ElementTypeEnum.TYPE_4, CONTAINER_2 }
Upvotes: 2
Views: 68
Reputation: 120858
EnumSet.allOf(ContainerEnum.class)
.stream()
.flatMap(x -> Arrays.stream(x.getElementTypeEnums()).map(y -> new SimpleEntry<>(x, y)))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
assuming something like a getter getElementTypeEnums()
exists.
Upvotes: 4