Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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 HashMap是否应该<;字符串,字符串>;是否要重构为枚举?_Java_Enumeration - Fatal编程技术网

Java HashMap是否应该<;字符串,字符串>;是否要重构为枚举?

Java HashMap是否应该<;字符串,字符串>;是否要重构为枚举?,java,enumeration,Java,Enumeration,我有一个映射,它表示prefixName和数据库中定义的每个序列的序列名之间的键名(组id前缀)映射。例如,如果groupId是“GRP-MMM-PNL”,我应该获得该组的对应序列名“MMM_panel_group_id”。我的问题是我应该使用Enum而不是定义这个HashMap @AllArgsConstructor public enum SequenceName { mmm_panel_group_id("GRP-MMM-PNL-"), mmm_ser

我有一个映射,它表示prefixName和数据库中定义的每个序列的序列名之间的键名(组id前缀)映射。例如,如果groupId是“GRP-MMM-PNL”,我应该获得该组的对应序列名“MMM_panel_group_id”。我的问题是我应该使用Enum而不是定义这个HashMap

@AllArgsConstructor
public enum SequenceName {

    mmm_panel_group_id("GRP-MMM-PNL-"),
    mmm_service_group_id("GRP-MMM-SRV-"),
    
    cms_panel_group_id("GRP-CMS-PNL-"),
    cms_service_group_id("GRP-CMS-SRV-"),

    smm_panel_group_id("GRP-SMM-PNL-"),
    smm_service_group_id("GRP-SMM-SRV-");
    
    @Getter
    private String groupPrefix;
}

private static HashMap<String, String> getPrefixSequenceNameMap() {

        HashMap<String, String> prefixSequenceNameMap = new HashMap<>();
        prefixSequenceNameMap.put("GRP-MMM-PNL-", "mmm_panel_group_id");
        prefixSequenceNameMap.put("GRP-MMM-SRV-", "mmm_service_group_id");

        prefixSequenceNameMap.put("GRP-CMS-PNL-", "cms_panel_group_id");
        prefixSequenceNameMap.put("GRP-CMS-SRV-", "cms_service_group_id");

        prefixSequenceNameMap.put("GRP-SMM-PNL-", "smm_panel_group_id");
        prefixSequenceNameMap.put("GRP-SMM-SRV-", "smm_service_group_id");

        return prefixSequenceNameMap;
    }
@allargsconstuctor
公共枚举序列名{
mmm面板组id(“GRP-mmm-PNL-”,
mmm服务组id(“GRP-mmm-SRV-”,
cms面板组id(“GRP-cms-PNL-”,
cms服务组id(“GRP-cms-SRV-”),
smm面板组id(“GRP-smm-PNL-”,
smm服务组id(“GRP-smm-SRV-”);
@吸气剂
私有字符串组前缀;
}
私有静态HashMap getPrefixSequenceNameMap(){
HashMap prefixSequenceNameMap=新HashMap();
前缀SequenceNameMap.put(“GRP-MMM-PNL-”,“MMM面板组id”);
前缀SequenceNameMap.put(“GRP-MMM-SRV-”,“MMM服务组id”);
前缀SequenceNameMap.put(“GRP-CMS-PNL-”,“CMS_面板_组id”);
前缀SequenceNameMap.put(“GRP-CMS-SRV-”,“CMS服务组id”);
前缀SequenceNameMap.put(“GRP-SMM-PNL-”,“SMM面板组id”);
前缀SequenceNameMap.put(“GRP-SMM-SRV-”,“SMM服务组id”);
返回前缀SequenceNameMap;
}
没有“应该”。这取决于你想要什么

  • 如果这些值在编译时是已知的,并且不会更改,则使用枚举可能更好。但你仍然可以使用地图
  • 如果值仅在运行时已知,或者在程序运行时更改,请使用映射

请检查您为什么询问?是什么让你特别想知道它是一个枚举而不是一个Hashmap?