Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java枚举组按值枚举_Java_Arrays_Arraylist_Enums - Fatal编程技术网

Java枚举组按值枚举

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

你能帮我解决一些事情吗。我的java应用程序中有enum:

   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!这正是我想要的