首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么String选择数字31作为hashCode方法子?

选择数字31的原因 在详细说明 String hashCode 方法选择数字31的作为子的原因之前,我们先来看看 String hashCode 方法是怎样实现的,如下: ?...上面用了比较简陋的数学手段证明了数字31是一个不大不小的质数,是作为 hashCode 子的优选质数之一。...当然并非所有的偶数作为子时,冲突率都会比较高,大家有兴趣可以自己验证。 3.2 哈希值分布可视化 上一节分析了不同数字作为子时的冲突率情况,这一节来分析一下不同数字作为子时,哈希值的分布情况。...这也就不难解释为什么数字2作为子时,算出哈希值的冲突率如此之高的原因了。所以这样的哈希算法要它有何用啊,拖出去斩了吧。接下来看看数字3作为子时的表现: ?...在看看数字17的情况怎么样: ? 数字17作为子时的表现,明显比上面两个数字好点了。虽然哈希值在第32分区和第34分区有一定的聚集,但是相比较上面2和3,情况明显好好了很多。

77120

科普:为什么 String hashCode 方法选择数字 31 作为

上面用了比较简陋的数学手段证明了数字31是一个不大不小的质数,是作为 hashCode 子的优选质数之一。...实验及数据可视化 本节,我将使用不同的数字作为子,对超过23万个英文单词进行哈希运算,并计算哈希算法的冲突率。...当然并非所有的偶数作为子时,冲突率都会比较高,大家有兴趣可以自己验证。 3.2 哈希值分布可视化 上一节分析了不同数字作为子时的冲突率情况,这一节来分析一下不同数字作为子时,哈希值的分布情况。...这也就不难解释为什么数字2作为子时,算出哈希值的冲突率如此之高的原因了。所以这样的哈希算法要它有何用啊,拖出去斩了吧。接下来看看数字3作为子时的表现: ?...在看看数字17的情况怎么样: ? 数字17作为子时的表现,明显比上面两个数字好点了。虽然哈希值在第32分区和第34分区有一定的聚集,但是相比较上面2和3,情况明显好好了很多。

37910
您找到你想要的搜索结果了吗?
是的
没有找到

科普:为什么 String hashCode 方法选择数字 31 作为

选择数字 31 的原因 在详细说明 String 的 hashCode 方法选择数字 31 的作为子的原因之前,我们先来看看 String 的 hashCode 方法是怎样实现的,如下: public...上面用了比较简陋的数学手段证明了数字 31 是一个不大不小的质数,是作为 hashCode 子的优选质数之一。...当然并非所有的偶数作为子时,冲突率都会比较高,大家有兴趣可以自己验证。 哈希值分布可视化 上一节分析了不同数字作为子时的冲突率情况,这一节来分析一下不同数字作为子时,哈希值的分布情况。...这也就不难解释为什么数字 2 作为子时,算出哈希值的冲突率如此之高的原因了。所以这样的哈希算法要它有何用啊,拖出去斩了吧。接下来看看数字 3 作为子时的表现: ?...在看看数字 17 的情况怎么样: ? 数字 17 作为子时的表现,明显比上面两个数字好点了。虽然哈希值在第 32 分区和第 34 分区有一定的聚集,但是相比较上面 2 和 3,情况明显好好了很多。

76910

科普:String hashCode 方法为什么选择数字31作为

上面用了比较简陋的数学手段证明了数字31是一个不大不小的质数,是作为 hashCode 子的优选质数之一。...实验及数据可视化 本节,我将使用不同的数字作为子,对超过23万个英文单词进行哈希运算,并计算哈希算法的冲突率。...当然并非所有的偶数作为子时,冲突率都会比较高,大家有兴趣可以自己验证。 3.2 哈希值分布可视化 上一节分析了不同数字作为子时的冲突率情况,这一节来分析一下不同数字作为子时,哈希值的分布情况。...接下来看看数字3作为子时的表现: [1vf9qwk5ca.png] 3作为子时,算出的哈希值分布情况和2很像,只不过稍微好了那么一点点。...在看看数字17的情况怎么样: [3h57rvnpss.png] 数字17作为子时的表现,明显比上面两个数字好点了。

1.7K190

科普:String hashCode 方法为什么选择数字31作为

上面用了比较简陋的数学手段证明了数字31是一个不大不小的质数,是作为 hashCode 子的优选质数之一。...实验及数据可视化 本节,我将使用不同的数字作为子,对超过23万个英文单词进行哈希运算,并计算哈希算法的冲突率。...当然并非所有的偶数作为子时,冲突率都会比较高,大家有兴趣可以自己验证。 3.2 哈希值分布可视化 上一节分析了不同数字作为子时的冲突率情况,这一节来分析一下不同数字作为子时,哈希值的分布情况。...这也就不难解释为什么数字2作为子时,算出哈希值的冲突率如此之高的原因了。所以这样的哈希算法要它有何用啊,拖出去斩了吧。接下来看看数字3作为子时的表现: ?...在看看数字17的情况怎么样: ? 数字17作为子时的表现,明显比上面两个数字好点了。虽然哈希值在第32分区和第34分区有一定的聚集,但是相比较上面2和3,情况明显好好了很多。

42130

「硬核JS数字之美

的 8 位二进制即 00110111,那么可能还会有人为如果是 4 位怎么办呢,4 位是存不了 57 这么大值的,溢出了 小数转二进制 可能还有人不了解十进制小数是怎么转二进制的,其实也有方法口诀 ...2 取整,顺序排列 用 2 十进制小数,可以得到积,将积的整数部分取出,再用 2 余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时 0...分别转为二进制,计算过程不叙述了,整数除 2 取余逆序排列,小数 2 取整顺序排列,结果合到一块为 1111.001 按照科学技术法规格化结果为 1.111001 * 2^3 再接下来,计算阶码,3...) 所以数字的最大正数和最小负数范围如下 1.7976931348623157e+308 ~ -1.7976931348623157e+308 如果超过这个值,则数字太大就溢出了,在 JS 中会显示...0,学名反向溢出 JS中整数的范围 和数字大小不同,数字可以有小数,但是整数就只是单纯整数 我们从尾数 M 来分析,精度最多是 53 位(包含规格化的隐含位 1 ),精确整数的范围其实就是 M 的最大值

5.4K20

JS】125-重温基础:数字

「本章节复习的是JS中的数字类型,涉及的API比较多。」 前置基础: 在JavaScript中,数字为双精度浮点类型(即一个数字范围只能在-(253-1)和(253-1)之间),整数类型也一样。...另外数字类型也可以是以下三种符号值: +Infinity : 正无穷; -Infinity : 负无穷; NaN : 非数字(not a number); 1.数字对象 JS中内置了Number对象的一些常量属性...= 0.2, c = 0.3; let d = (Math.abs(a + b - c) < Number.EPSILON); d; // true Number.MIN_SAFE_INTEGER JS...Number.MAX_SAFE_INTEGER JS中最大的安全的integer型数字 (253 - 1)。...let a2 = '字符串:' + a.toPrecision(1);// "字符串:1" let a2 = '字符串:' + a.toPrecision(2);// "字符串:1.2" 3.数学对象 JS

2.5K00

Android自定义View实现圆环带数字百分比进度条

是一个圆环形状的反映真实进度的进度条,百分比的进度文字跟随已完成进度的圆弧转动。以下是效果图: ? ? 这个自定义View可以根据需要设定圆环的宽度和百分比文字的大小。...先说一下思路:这个View一共分为三部分:第一部分也就是灰色的圆环部分,代表未完成的进度;第二部分是蓝色的圆弧部分,代表已经完成的进度;第三部分是红色的百分比数字百分比文本,显示当前确切的完成进度。...扫过的角度是当前百分比乘以360度一整圈的角度,并且随着progress增加而不断增加,产生动画的效果; ⑨:最难的部分,画文字。...⑩:这里我们给View添加了 一个方法,setProgress,参数为int型的进度,这样外界使用者就可以根据实际进度来指定View的进度来显示当前实际工作完成的百分比。...NumberProgressBarActivity extends Activity { /** handler消息标识 */ protected static final int WHAT_INCREASE = 1; /** 圆形带数字的进度条

1.3K10
领券