问题
>
我想要一个键值对列表,比如HashMap,或者其他推荐的。
此列表应包含用于检索值的唯一键对象。
键不应该是字符串,因为字符串不是唯一的,可以传递任何值。
常量也是有限的,也使用字符串的概念,不应该被考虑。
示例
>
在这个阶段,我创建了一个包含所有键的枚举。例如,枚举颜色{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中是否有一种类型的集合可以完成这项工作?如果不是,那么什么可能是这样做的最佳实践?
潜在解决方案
在检查了枚举及其可能性之后,有一种方法可以在枚举中为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.
}
如果您有任何更简单的解决方案而不增加解决方案的复杂性,请发表意见。
钥匙在所有地图中都是唯一的。添加重复的键,然后它将被覆盖。.不同映射实现之间的差异涉及到空键的可能性、迭代顺序和并发问题。
例:
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");
问题内容: 我想在服务器中使用列作为表 但这出错了 当我将的类型更改为varchar时..它起作用了! 你能告诉我是否可以使文本列为 问题答案: 基本上,您不能将列用作键。因为实际上这么大的列将不是唯一的,并且可能会出现更多重复的情况。因此,寻找方法并将该输出用作UNIQUE约束。 希望这对您有帮助
问题内容: 我的数据结构有一个枚举作为键,我希望以下内容能自动解码。这是错误还是某些配置问题? 我得到的错误是,这似乎使字典与数组混淆。 typeMismatch(Swift.Array,Swift.DecodingError.Context(codingPath:[可选(__lldb_expr_85.AStruct。(_ 0E2FD0A9B523101D0DCD67578F72D1DD中的Cod
所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!
问题内容: 因此,我正在为测试练习一些sql编码,但是我无法获得外键来引用主键。 这是无效的表格: 这是它引用的表: 每当我尝试运行脚本时,它总会返回: 错误报告 -SQL错误:ORA-02270:此列列表 02270没有匹配的唯一或主键。00000-“此列列表没有匹配的唯一或主键” 原因:CREATE / ALTER TABLE中的REFERENCES子句语句 给出了一个列列表,该列列表在被引用
我试图使用Jackson将JSON反序列化为Java POJO。在不泄露机密信息的情况下,以下是ObjectMapper反序列化失败时的堆栈跟踪示例: 枚举类型如下所示: 我确实意识到我试图反序列化一个空值。但我认为这仍然有效:反序列化的结果应该等同于具有的映射,这确实是一个有效的Java指令。非常感谢帮助,提前感谢。
问题内容: 以下代码不起作用,因为Freemarker似乎将[]中的表达式的值强制转换为String,然后将其用作键,这并不是实际期望的值。 准备模板模型: my.ftl: 在Freemarker文档中,描述了如何访问Enum本身,但是我没有找到有关如何使用Enum作为键从哈希中获取值的任何信息。 谢谢。 问题答案: 要对此释义Freemarker文档常见问题, 您不能在myMap [key]表达