【发布时间】:2019-08-01 03:41:18
【问题描述】:
我创建了具有两个值的枚举:品牌名称和品牌代码。
我想通过输入品牌名称来知道品牌代码。
我也想通过输入品牌代码来知道品牌名称。
这个问题可以用 Enum 解决吗?还是其他代码更有效?我想让代码尽可能短
我创建了以下代码来搜索品牌代码。如果我想反之亦然,我可以创建另一个 Hashmap 和方法来将代码转换为品牌。但这是解决问题的有效方法吗?
public enum Brand{
COLA("cola", "CL8935"),
BREAD("bread", "BR2810"),
SNICKERS("snickers", "SN4423");
private static final Map<String, String> BY_BRAND = new HashMap<>();
static {
for (Brand brand : values()){
BY_BRAND.put(brand.code, brand.brand);
}
}
private final String brand;
private final String code;
public static String convertToCode(String brand){
return BY_BRAND.get(brand.toLowerCase()).toString();
}
}
【问题讨论】:
-
非常有效。或者,如果它只是几个项目,您可以循环。或者使用 BiMap。
-
您似乎在这里混淆了许多东西,并没有显示您的其余代码。
-
@chrylis 我没有把所有内容都写出来,因为我的问题就在这里。代码的其余部分只是一个调用此枚举内部方法的主类。一个 sn-p 打电话给
Brand.convertToCode("the brand input"); -
只是一个 note:在
put中使用code作为键,但在get中使用brand.toLowerCase- 肯定不会返回(假设brand是构造函数中的第一个值,如"cola"和code构造函数中的第二个值,如"CL8935") - 在这里似乎混合了两种情况(有效是一个非常广泛的术语) -
@CarlosHeuberger 哎呀,关键应该是
brand。
标签: java spring-boot java-8 enums