gpt4 book ai didi

java - Java中的唯一ID生成

转载 作者:行者123 更新时间:2023-11-30 07:23:17 25 4
gpt4 key购买 nike

给定一个输入字符串,字符串长度不会超过30,输出将是一个唯一的id号。在 Java 中有没有办法可以做到这一点?相同的字符串将始终生成相同的 id,不同的字符串不能生成相同的 id。 java HashCode() 可以做到这一点吗?

谢谢

最佳答案

满足要求

the same string will always generate the same id, different string can not generate the same id

你会得到相当大的数字。您要求函数为 injective因此您需要尽可能多的数字作为可能的 String 的数量,在您的情况下大约是 $255^30$(如果您允许任意 Unicode 字符,则大约是 $65536^30$)。所以你需要 BigIntegers 并且当然你使用 int (简单地说,长度最多为 30 的 String 比 numbers in 整数)。例如,new BigInteger(theString.getBytes("")) 满足您的要求。

如果你使用hashCode,你会失去单射性,但是两个String具有相同hashCode的机会非常低在大多数情况下(实际上 hashing 的目的是降低这种可能性)。如果你想更加确定碰撞次数均匀地小,你可以使用一些 cryptographic hash function ,但是映射仍然不是单射的。

也许解释您的要求的原因将有助于找到最佳解决方案。

关于java - Java中的唯一ID生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109601/

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