作者:n重庆商报程红Lft | 来源:互联网 | 2023-05-16 22:21
我如何获得与密钥相关的值?
假设,我的代码编写如下:
Hashmap hm = new Hashmap();`
hm.put("a","aValue"); // Suppose hashcode created for key "a" is 209
hm.put("b","bValue"); // Here hashcode created for key "b" is 209 as well.
现在,我想检索与key关联的值"b"
.我会打电话hm.get("b")
.因为,hashmap基于密钥的哈希码搜索键/值对.Hashmap会找到209
密钥的哈希码"b"
.因为,为密钥找到相同的哈希码"a"
,Hashmap可能返回值"aValue"
而不是期望值"bValue"
所以,这是我的问题,我想检索与密钥相关的值.我该怎么做?
1> Eran..:
HashMap
知道如何处理具有相同的多个键hashCode
.只要两个键彼此不相等(使用equals
键所属的类),HashMap
即使它们共享相同,也可以区分它们hashCode
.
当两个不同的键具有相同的键时hashCode
,它们存储在与该列表对应的映射索引中的链表结构中hashCode
.当您搜索其中一个键(通过调用get
或containsKey
)时,HashMap
将找到与其对应的地图索引hashCode
并按顺序搜索链接列表中的条目,equals
以识别所请求的密钥.
@Razib`hm.get( "B")将返回`bValue`只要`!a.equals(B)`(注意equals`的`使用).