gpt4 book ai didi

Java 默认字符串哈希函数在单个字符串上产生冲突

转载 作者:行者123 更新时间:2023-12-01 06:32:03 24 4
gpt4 key购买 nike

我是学计算机的,所以如果我说的太荒谬,请多多包涵。它对我来说确实如此,这就是为什么我在这里寻找答案。我阅读了如何在 Java 中散列字符串,然后查看了 ASCII 表。字母“d”和“n”分别哈希为 100 和 110。现在,如果我要用 Java 创建一个全新的 hashmap,默认情况下它有 10 个桶。因此,即使哈希码是唯一的,mod 10 它们都是 0。这会导致冲突。在 1 个字符串上发生冲突并不适合我,那么我描述的过程是否正确?提前致谢。

最佳答案

您描述的可能是正确的,由于 pigeonhole principle,两者将落在同一个桶中,这基本上意味着如果你的元素多于放置它们的孔,那么两个或更多的元素最终会落在同一个孔上。在这种情况下,仅考虑 95 个可打印的 ASCII字符,原理是每个洞至少有10个(不考虑实际值,只考虑数量)。

但是,shazin 的答案也是正确的,因为哈希值实际上并未用作映射中值的标识,而是用于查找 kay/value 对所属的桶,然后在中查找值使用它们的 equals() 方法检查存储桶是否相等(或者使用 ==,如果使用 IdentityHashMap。)

关于Java 默认字符串哈希函数在单个字符串上产生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971703/

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