使用 HashMap 进行对象查找

问题描述 投票:0回答:1

我正在尝试使用 Java

HashMap<String, object>
作为对象字典来通过名称查找对象 (
string
)。所有的名字都是唯一的;但是,通常非常相似(例如:“delay1”,“delay2”)。
HashMap.get(string)
是否保证找到具有该名称的唯一项目,或者只是查找具有相同哈希值的项目?

代码运行的方式,看起来查找不一致。

如果

HashMap<String, object>
不能满足我的需要,Java 中是否有类似于 C# 字典的东西?

java dictionary hashmap
1个回答
5
投票

是的,

HashMap
保证找到精确匹配,而不仅仅是具有相同哈希码的匹配。

基于哈希的容器通过在查找键和来自其哈希桶之一的候选者上调用

equals()
来实现这一点,以确保存在实际匹配。这就是必须始终重写
equals
hashCode
方法的原因,如 文档中所述:

请注意,每当覆盖此 [

hashCode
] 方法时,通常都需要覆盖
equals
方法,以维护
hashCode
方法的一般契约,即相等的对象必须具有相等的哈希码。

© www.soinside.com 2019 - 2024. All rights reserved.