2 回答

TA贡献1874条经验 获得超12个赞
潜在解决方案
在检查枚举及其可能性之后,有一种方法可以将值分配给枚举中的键,如下所示。
创建一个新枚举并分配 Key,例如公共枚举 Color{RED;}。
向其添加构造函数参数,例如公共枚举 Color{RED(“red”);}
向枚举添加构造函数,例如公共枚举 Color{RED(“red”);Color(){}}
在枚举中添加一个名为值的新字段,例如私有字符串值;public String getValue() {return value;}
在枚举的构造函数中设置字段值,例如 Color(String value) {this.value = value;}
Enum以这种方式工作,对于您添加的每个Key,它都会创建一个链接到Key的新实例字段 String值,然后它将使用您声明的构造函数来保存该值。
全面实施
public enum Color
{
//[PROP]
RED("red"),
GREEN("green"),
BLUE("blue");
private String value;
public String getValue {return value;}
//[BUILD]
Color(String value) {this.value = value;}
//[UTIL]
Color[] getKeys() {return this.values;} //values method is already a method existing in enum class, we are just proposing another method name here as a facade for simplicity.
}
如果我们想检索一个项目,我们只需执行Color.RED.value,这样只有现有的键返回想要的值。
请注意,值不必是键的名称,但可以是完全不同的值。
如果您有任何更简单的解决方案,而不会给解决方案带来更多复杂性,请发表评论。

TA贡献1776条经验 获得超12个赞
这些键在所有地图中都是唯一的。添加重复的键,然后它将被覆盖。各种映射实现之间的差异涉及空键的可能性,迭代顺序和并发问题。
示例:
Map hm = new HashMap(); hm.put("1", new Integer(1)); hm.put("2", new Integer(2)); hm.put("3", new Integer(3)); hm.put("4", new Integer(4)); hm.put("1", new Integer(5));// value integer 1 is overwritten by 5
此外,Map键是通用的,你可以放你想要的,而不仅仅是字符串,示例:
Map<Integer, String> hm = new HashMap<>(); hm.put(10, "1");
添加回答
举报