栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

HashMap中类似的Strings是否会导致发生碰撞的机会增加?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HashMap中类似的Strings是否会导致发生碰撞的机会增加?

不,不会。那 不一定 是因为

String#hashpre
; 但是因为a
HashMap
会通过对最后16个16位进行XOR运算来重新哈希您的哈希码。

// this is re-hashing that is done internallystatic final int hash(Object key) {    int h;    return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}

但是,即使那 增加碰撞,您也可能永远不会感觉到。对于将条目逐个放置(以链接的方式)的小桶/箱,

equals
将被调用以获取您关心的 实际
条目。

如果某个仓位/存储桶达到某个阈值,它将被转换为

perfectly balanced tree node
。这样的树中的搜索时间为
0(logn)

即使 相同的条目在重新哈希 报告了相同的哈希码,如果出现平局,地图也必须决定哪个条目 较大

然后

Comparable#compareTo
,如果您的键实现了Comparable
,它将尝试调用。如果他们不执行
Comparable
System.identityHashpre
将在平局的情况下决定。

从性能角度来说,由于所有这些内部因素,您的平均搜索时间将

O(1)
在地图中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号