如果HashMap<字符串,字符串>是否重构为Enum



我有一个映射,它表示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;
}

没有"应该";。这取决于你想要什么。

  • 如果值在编译时是已知的,并且它们没有更改,则枚举可能更好。不过你仍然可以使用地图
  • 如果这些值仅在运行时已知,或者在程序运行时发生更改,请使用Map

最新更新