Java枚举组按值枚举
你能帮我解决一些事情吗。我的java应用程序中有enum:Java枚举组按值枚举,java,arrays,arraylist,enums,Java,Arrays,Arraylist,Enums,你能帮我解决一些事情吗。我的java应用程序中有enum: public enum EnumKey { ALPHA("group1"), BETA("group2"), GAMMA("group3"), SIGMA("group2"), DELTA("group2") // and other values with "group1" or "group2" or "group3", constructo
public enum EnumKey {
ALPHA("group1"),
BETA("group2"),
GAMMA("group3"),
SIGMA("group2"),
DELTA("group2")
// and other values with "group1" or "group2" or "group3", constructors and getters
private String groupName;
}
我想得到类似于Map
的东西,其中键
是我指定的组名
,值
是按组名枚举键列表
分组和排序的(我只有三个指定的组名)。我希望我的问题是清楚的
希望您能帮助我找到一种优雅的方法来实现这一点。只需在您的
EnumKey
中创建一个带有您自己建议的签名的映射即可
在静态代码块中,迭代枚举中的所有值,并通过将它们添加到适当的列表(如果存在)将它们添加到映射中,如果不创建列表,然后添加它。这将生成您需要的映射:
public static Map<String, List<EnumKey>> crateEnumKeyMap() {
Map<String, List<EnumKey>> map = new HashMap<>();
for (EnumKey enumKey : EnumKey.values()) {
List<EnumKey> enumKeyList = map.get(enumKey.getGroupName());
if (enumKeyList == null) {
enumKeyList = new ArrayList<>();
map.put(enumKey.groupName, enumKeyList);
}
enumKeyList.add(enumKey);
}
return map;
}
publicstaticmap/keymap(){
Map Map=newhashmap();
对于(EnumKey EnumKey:EnumKey.values()){
List enumKeyList=map.get(enumKey.getGroupName());
如果(enumKeyList==null){
enumKeyList=新的ArrayList();
map.put(enumKey.groupName,enumKeyList);
}
enumKeyList.add(enumKey);
}
返回图;
}
Hi Jahra,你试过什么?你能粘贴一个例子吗?我只能通过创建三个列表来解决这个问题,每个组对应三个列表,然后迭代EnumKey.values()
并使用if-else对其排序。我正在寻找简短而有效的决定,如果它存在@RegThank!这正是我想要的