public enum AdcodeEnum {
/**省级用户*/
ZHE_JIANG("浙江省", "330000"),
/**杭州市*/
HANG_ZHOU("杭州市", "330100"),
/**宁波市*/
NING_BO("宁波市", "330200"),
/**温州市*/
WEN_ZHOU("温州市", "330300"),
/**嘉兴市*/
JIA_XING("嘉兴市", "330400"),
/**湖州市*/
HU_ZHOU("湖州市", "330500"),
/**绍兴市*/
SHAO_XING("绍兴市", "330600"),
/**金华市*/
JIN_HUA("金华市", "330700"),
/**衢州市*/
QU_ZHOU("衢州市", "330800"),
/**舟山市*/
ZHOU_SHAN("舟山市", "330900"),
/**台州市*/
TAI_ZHOU("台州市", "331000"),
/**丽水市*/
LI_SHUI("丽水市", "331100");
private String label;
private String code;
public static final Map<String, AdcodeEnum> CodeMap = new HashMap<>();
public static final Map<String, AdcodeEnum> LabelMap = new HashMap<>();
static {
Arrays.stream(values()).forEach(enums->{
CodeMap.put(enums.getCode(), enums);
});
Arrays.stream(values()).forEach(enums->{
LabelMap.put(enums.getLabel(), enums);
});
}
public static AdcodeEnum getByCode(String inCode){
return CodeMap.get(inCode);
}
public static AdcodeEnum getByLabel(String inLabel){
return LabelMap.get(inLabel);
}
AdcodeEnum(String label, String code) {
this.code = code;
this.label = label;
}
- 最早的时候使用stream循环寻找第一个匹配的值,时间复杂度为O(n) 进行类型转换频繁的时候耗用大量cpu
- 切换使用switch 时间复杂度O(1),但是带来新的问题就是当枚举新增的时候需要同步更新switch块
- hsahMap和switch其实是相同的,这里使用常量,避免了O(n),新增修改枚举量也不需要同步更换,有洁癖的可以考虑将 静态块 改成懒加载