当前位置:首页 > 科技  > 软件

为什么Java String哈希函数乘数为31?

来源: 责编: 时间:2024-04-26 08:49:05 100观看
导读哈喽,大家好,我是了不起。今天给大家介绍一个底层数字问题——为什么Java String哈希函数乘数为31?1、源码重现在这个实现中,31 被用作乘数。那么,为什么选择 31 作为乘数呢?2、降低哈希冲突31 是一个质数,相信大家学过数学

哈喽,大家好,我是了不起。iK828资讯网——每日最新资讯28at.com

今天给大家介绍一个底层数字问题——为什么Java String哈希函数乘数为31?iK828资讯网——每日最新资讯28at.com

1、源码重现

图片iK828资讯网——每日最新资讯28at.com

在这个实现中,31 被用作乘数。那么,为什么选择 31 作为乘数呢?iK828资讯网——每日最新资讯28at.com

2、降低哈希冲突

31 是一个质数,相信大家学过数学的,质数是这样定义的:iK828资讯网——每日最新资讯28at.com

指在大于1的自然数中,除了1和它本身以外没有任何正因数的自然数。iK828资讯网——每日最新资讯28at.com

在哈希函数中,使用质数作为乘数可以提高哈希值的分布均匀性。如果使用非质数作为乘数,那么哈希值的分布可能会出现偏斜。iK828资讯网——每日最新资讯28at.com

例如,如果使用 10 作为乘数,那么所有以 5 为尾数的字符串的哈希值将是相同的。这会导致哈希冲突的可能性增加。iK828资讯网——每日最新资讯28at.com

3、提高哈希计算速度

在 Java 中,int 类型的变量占用 32 位。iK828资讯网——每日最新资讯28at.com

31 是一个奇数,因此 31 * i 的结果可以只使用 31 位来表示。这意味着在计算哈希值时,可以使用位运算来代替乘法运算。iK828资讯网——每日最新资讯28at.com

位运算比乘法运算要快得多。iK828资讯网——每日最新资讯28at.com

因此,使用 31 作为乘数可以提高哈希计算速度。iK828资讯网——每日最新资讯28at.com

4、31是一个良好的折中方案

在实际应用中,使用 31 作为乘数可以提供良好的哈希值分布和计算速度。当然,也可以使用其他质数作为乘数。例如,37 和 43 也是不错的选择。iK828资讯网——每日最新资讯28at.com

但是,31 是一个相对较小的质数,因此它在计算速度方面具有优势。此外,31 也是一个常用的质数,因此在许多其他哈希函数中也得到了使用。iK828资讯网——每日最新资讯28at.com

当然,31 并不是一个完美的乘数。在某些情况下,使用其他质数可能会更好。但是,对于大多数应用程序来说,31 都是一个不错的选择。iK828资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-85697-0.html为什么Java String哈希函数乘数为31?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 详解JavaScript中的层叠规则(CSS Specificity)

下一篇: 从零到生产:Go在Google的历程

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 共享单车的故事讲到哪了?

    共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    四年持续更迭坚持探索行业无人之境,HarmonyOS 4带来五大升级多项创新

    除了华为每年新发布的旗舰手机系列,上亿花粉更加期待鸿蒙系统每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式发布,这也是该系统历经四年的再
  • 余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    8月4日消息,2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS 4、全新升级的鸿蒙开发套件、HarmonyOS Next开发者预览版本等一系列
  • iQOO Neo8系列或定档5月23日:首发天玑9200+ 安卓跑分王者

    iQOO Neo8系列或定档5月23日:首发天玑9200+ 安卓跑分王者

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
Top
Baidu
map