Java HashMap是否应该<;字符串,字符串>;是否要重构为枚举?
我有一个映射,它表示prefixName和数据库中定义的每个序列的序列名之间的键名(组id前缀)映射。例如,如果groupId是“GRP-MMM-PNL”,我应该获得该组的对应序列名“MMM_panel_group_id”。我的问题是我应该使用Enum而不是定义这个HashMapJava 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
@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;
}
没有“应该”。这取决于你想要什么
- 如果这些值在编译时是已知的,并且不会更改,则使用枚举可能更好。但你仍然可以使用地图
- 如果值仅在运行时已知,或者在程序运行时更改,请使用映射