问题
我想要一个键值对列表,例如HashMap或其他(如果推荐)。
此列表应包含用于检索值的唯一键对象。
键不应该是STRING,因为字符串不是唯一的,并且可以传递任何值。
常量也受到限制,并且也在使用字符串的概念,因此不应该考虑。
示例
所需的是实例列表[Color.Red] =“ Red”。
在此阶段,我创建了一个包含所有键的枚举。 例如枚举Color {RED,BLUE},然后将其添加到新的HashMap中。
因此检索颜色的唯一方法是将枚举用作键列表[Color.RED]。
实施
public final static Map<Color, String> colors = new HashMap<>();
public final static enum Color{RED, BLUE;}
static
{
colors.put(RED, "red");
colors.put(BLUE, "blue");
}
public static string getColor(Color color)
{
return colors.get(color);
}
需要帮助
Java中是否存在可以完成此工作的Collection类型? 如果不是,那么最佳做法是什么?
答案 0 :(得分:0)
键在所有地图中都是唯一的。添加重复的密钥,它将被覆盖。各种地图实现之间的差异涉及空密钥的可能性,迭代顺序和并发问题。
例如:
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<Integer, String> hm = new HashMap<>();
hm.put(10, "1");
答案 1 :(得分:0)
潜在的解决方案
检查完枚举及其可能性之后,可以通过以下方法为枚举中的Key赋值。
全面实施
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.
}
如果您有任何更简单的解决方案而不给解决方案增加更多复杂性,请发表评论。