gpt4 book ai didi

java - 如何对字符串进行哈希处理,以便在任何地方修改字符时它几乎不会改变?

转载 作者:行者123 更新时间:2023-11-30 04:03:22 25 4
gpt4 key购买 nike

获取此代码

public static void main(String[] args) {
System.out.println("1000000".hashCode());
System.out.println("1000001".hashCode());
System.out.println("2000000".hashCode());
}

这会产生输出

1958013297
1958013298
-1449450318

第一个是“控件”。在第二个中,我更改了其中一个字符,它产生了一个非常相似的哈希值,但是如果我在开始时修改一个字符,它会给我一个完全不同的哈希值。有没有一种方法可以使其无论更改字符串开头还是结尾的字符都不会影响哈希范围?

最佳答案

您所描述的可能不是一个好主意,因为它会导致不相关字符串的哈希聚集。这将导致哈希表性能不佳,并在其他上下文中产生大量冲突。

也就是说,有很多简单的解决方案。您可以将字符的所有数值加在一起,这将使微小的更改仅对散列产生一点影响(但会产生可怕的分散)。作为一种极端情况,您可以将所有内容哈希为 0,这将使哈希在任何内容发生变化时都不会改变。

希望这有帮助!

关于java - 如何对字符串进行哈希处理,以便在任何地方修改字符时它几乎不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442269/

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