Java 使用HashMap进行对象查找

Java 使用HashMap进行对象查找,java,dictionary,hashmap,Java,Dictionary,Hashmap,我正在尝试使用JavaHashMapas和对象字典,以便按名称(string)查找对象。所有的名字都是唯一的;但是,通常非常相似(例如:“delay1”、“delay2”)。HashMap.get(string)是否保证找到具有该名称的唯一项,或者只是查找具有相同哈希的项 从代码的运行方式来看,查找似乎不一致 如果HashMap无法满足我的需要,Java中是否有类似于C#Dictionary的功能?是的,HashMap保证找到精确的匹配,而不仅仅是具有相同哈希代码的匹配 基于散列的容器通过调用查

我正在尝试使用Java
HashMap
as和对象字典,以便按名称(
string
)查找对象。所有的名字都是唯一的;但是,通常非常相似(例如:“delay1”、“delay2”)。
HashMap.get(string)
是否保证找到具有该名称的唯一项,或者只是查找具有相同哈希的项

从代码的运行方式来看,查找似乎不一致


如果
HashMap
无法满足我的需要,Java中是否有类似于C#Dictionary的功能?

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

基于散列的容器通过调用查找键上的
equals()
,并从其中一个散列桶中调用候选项,以确保存在实际匹配。这就是必须始终重写
equals
hashCode
方法的原因,如中所述:

请注意,每当重写此[
equals
]方法时,通常需要重写
hashCode
方法,以便维护
hashCode
方法的一般约定,该约定规定相等的对象必须具有相等的哈希代码


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

基于散列的容器通过调用查找键上的
equals()
,并从其中一个散列桶中调用候选项,以确保存在实际匹配。这就是必须始终重写
equals
hashCode
方法的原因,如中所述:

请注意,每当重写此[
equals
]方法时,通常需要重写
hashCode
方法,以便维护
hashCode
方法的一般约定,该约定规定相等的对象必须具有相等的哈希代码


HashMap
保证它将返回您要查找的密钥的值。你能分享一些代码来说明“查找不一致”的原因吗?@markshancock
HashMap
的行为几乎和C#的字典一样。两个最大的区别是:(1)
HashMap
允许存储
null
键,以及(2)
HashMap
在缺少键时返回
null
,而不是抛出异常。@Mureinik问题似乎是对象正在从HashMap中消失。看见这里还有关于类设计的更多信息。
HashMap
保证它将返回您要查找的键的值。你能分享一些代码来说明“查找不一致”的原因吗?@markshancock
HashMap
的行为几乎和C#的字典一样。两个最大的区别是:(1)
HashMap
允许存储
null
键,以及(2)
HashMap
在缺少键时返回
null
,而不是抛出异常。@Mureinik问题似乎是对象正在从HashMap中消失。看见还有更多关于课堂设计的信息。