gpt4 book ai didi

java - 使用哈希码作为唯一 ID

转载 作者:搜寻专家 更新时间:2023-10-30 21:43:52 26 4
gpt4 key购买 nike

我在一个基于 java 的系统中工作,我需要为视觉显示中的某些元素设置一个 id。一类元素是字符串,因此我决定使用 String.hashCode() 方法来获取这些元素的唯一标识符。

但是,我遇到的问题是,如果 id 为负数并且 String.hashCode 经常返回负值,那么我在 borks 工作的系统。一种快速的解决方案是仅在哈希码调用周围使用 Math.abs() 以保证获得肯定的结果。对于这种方法,我想知道的是两个不同元素具有相同哈希码的可能性有多大?

例如,如果一个字符串返回哈希码 -10 而另一个字符串返回哈希码 10,则会发生错误。在我的系统中,我们讨论的是通常不超过 30 个元素的对象集合,所以我不认为这真的是个问题,但我很好奇数学是怎么说的。

最佳答案

哈希码可以被认为是伪随机数。从统计上讲,当人口规模约为 54K(any int 为 77K)时,使用正的 int 哈希码,任何两个元素之间发生冲突的可能性达到 50% )。参见 Birthday Problem Probability Table用于各种哈希码大小的冲突概率。

此外,您单独使用 Math.abs() 的想法是有缺陷的:它并不总是返回正数!在 2 的补码运算中,Integer.MIN_VALUE 的绝对值就是它自己!众所周知,“polygenelubricants” 的哈希码就是这个值。

关于java - 使用哈希码作为唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21368492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com