作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
获取此代码
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/
我是一名优秀的程序员,十分优秀!