gpt4 book ai didi

java - 短字符串的哈希码可以相同吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:07:54 26 4
gpt4 key购买 nike

我有短的 String(少于 10 个字符)。我会将其转换为 int 并将其用作主键。 (由于一些小问题,我不能使用 String 主键。)我知道无限长的字符串的哈希码会发生冲突,但短字符串也会发生冲突吗?

最佳答案

绝对是。例如,EaFB 是冲突字符串,每个字符串的长度只有两个字符!示例:

public static final void main(String[] args) {
System.out.println("Ea".hashCode() + " " + "FB".hashCode());
}

打印 2236 2236


Java String#hashCode 函数并不真正接近随机。短字符串很容易产生碰撞,长字符串也好不到哪里去。

一般来说,即使您只坚持每个字符 6 位(ASCII 字母和数字,以及几个符号),您也会超过 32 位哈希码的可能值,只有一个 6 字符的字符串-- 也就是说,您绝对可以保证 2^36 个 6 字符 6 位字符串之间的冲突。

关于java - 短字符串的哈希码可以相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799212/

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