java - 将枚举的每个数组值映射到枚举值
问题描述
我有看起来像这样的枚举
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 }
解决方案
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()
。
推荐阅读
- reactjs - 在 React 状态下访问嵌套数组会出现错误 Uncaught TypeError: Cannot read properties of undefined (reading '0')
- go-get - 获取错误“无法从远程存储库读取”
- mongodb - 使用 mongoDB 聚合使用数组文档填充对象,保留该对象中的键
- r - 在 R 中,帮助将常规表格转换为带边框的 ggplot 表格?
- go - Go YouTube API:用什么代替 liveBroadcasts.control 方法来显示石板?
- instruments - 如何在 Xcode 13 / iOS15 中测量能源使用情况?
- reactjs - 如何防止在错误按钮上提交表单并且只在右键上工作
- spring-boot - @cachePut 用于 Spring Boot 中对象列表中的数据更新
- c++ - 无法使用 lldbbridge.py 来检查 Qt 对象,因为“包装器前缀”中的错误
- r - 地理编码:找到两组位置之间距离的有效方法