当前位置: 首页 > 知识库问答 >
问题:

以唯一键作为对象或枚举列出键值

居飞扬
2023-03-14

问题

>

  • 我想要一个键值对列表,比如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中是否有一种类型的集合可以完成这项工作?如果不是,那么什么可能是这样做的最佳实践?

  • 共有2个答案

    唐弘和
    2023-03-14

    潜在解决方案

    在检查了枚举及其可能性之后,有一种方法可以在枚举中为Key赋值,比如跟随。

    • 创建新的枚举并分配键,例如公共枚举颜色{RED;}

    全面实施

    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.
    }
    
    • 如果我们想检索一个项目,我们只需简单地做颜色。RED. value,这样只有现有的键返回想要的值。
    • 请注意,value不需要是键的名称,但可以是完全不同的值。

    如果您有任何更简单的解决方案而不增加解决方案的复杂性,请发表意见。

    慕容宏邈
    2023-03-14

    钥匙在所有地图中都是唯一的。添加重复的键,然后它将被覆盖。.不同映射实现之间的差异涉及到空键的可能性、迭代顺序和并发问题。

    例:

    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指令。非常感谢帮助,提前感谢。

    • 本文向大家介绍主键与唯一键,包括了主键与唯一键的使用技巧和注意事项,需要的朋友参考一下 首要的关键 主键是一列,用于唯一地标识表的每个元组。 它用于向表添加完整性约束。一个表中只能使用一个主键。在主键的情况下,重复和NULL(空)值无效。主键也可以用作其他表的外键。 让我们举个例子 我们有一个表名employee,用于存储公司员工的数据。下表显示了该表的内容。 Emp_id 名称 号码 位置 薪水