我正在尝试使用 Java
HashMap<String, object>
作为对象字典来通过名称查找对象 (string
)。所有的名字都是唯一的;但是,通常非常相似(例如:“delay1”,“delay2”)。 HashMap.get(string)
是否保证找到具有该名称的唯一项目,或者只是查找具有相同哈希值的项目?
代码运行的方式,看起来查找不一致。
如果
HashMap<String, object>
不能满足我的需要,Java 中是否有类似于 C# 字典的东西?
是的,
HashMap
保证找到精确匹配,而不仅仅是具有相同哈希码的匹配。
基于哈希的容器通过在查找键和来自其哈希桶之一的候选者上调用
equals()
来实现这一点,以确保存在实际匹配。这就是必须始终重写 equals
和 hashCode
方法的原因,如 文档中所述:
请注意,每当覆盖此 [
] 方法时,通常都需要覆盖hashCode
方法,以维护equals
方法的一般契约,即相等的对象必须具有相等的哈希码。hashCode