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

Boolean.hashCode()

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

Boolean.hashCode()

1231和1237只是两个(足够大) 任意质数 。任何其他两个大质数都可以。

为什么要灌注?
假设一秒钟,我们挑选合数(非素数),说1000年和2000年当插入到布尔哈希表, 会进入斗

1000 % N
RESP
2000 %N
(这里
N
是桶的数量)。

现在注意

  • 1000 % 8
    与同一桶
    2000 % 8
  • 1000 % 10
    与同一桶
    2000 % 10
  • 1000 % 20
    与同一桶
    2000 % 20
  • ....

换句话说,它将导致 许多碰撞

这是因为1000的分解(2 3,5 3)和2000年的因式分解(2 4,5
3)有这么多的共同因素。因此选择质数,因为它们与存储桶大小不太可能具有任何共同的因素。

为什么 素数。2和3不会吗?
在计算复合对象的哈希码时,通常会为组件添加哈希码。如果在具有大量存储桶的哈希集中使用的值太小,则存在对象分布不均的风险。

碰撞重要吗? 布尔值到底有两个不同的值吗?
映射可以包含布尔值以及其他对象。而且,正如Drunix所指出的,创建复合对象的哈希函数的一种常用方法是重用子组件哈希代码的实现,在这种情况下,最好返回大的素数。



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

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

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