Java 枚举传参获取值
平常常用的根据传参获取枚举值
public enum SaleTypeStrEnum{
JX,
// OTHERS
;
public static SaleTypeStrEnum getByName(String saleTypeStr){
for (SaleTypeStrEnum value : SaleTypeStrEnum.values()) {
if(value.name().equals(saleTypeStr)){
return value;
}
}
return null;
}
}
每次传进来值都要遍历整个枚举,O(n)效率太低了,还是老规矩,空间换时间。
public enum SaleTypeStrEnum{
JX,
// OTHERS
;
/**
* 预热转换关系到内存
*/
private static Map<String, SaleTypeStrEnum> NAME_MAP = Arrays.stream(SaleTypeStrEnum.values()).collect(Collectors.toMap(SaleTypeStrEnum::name, Function.identity()));
public static SaleTypeStrEnum getByName(String saleTypeStr){
return NAME_MAP.get(saleTypeStr);
}
}
以上两种都可以实现,根据使用情况看用哪种