相关疑难解决方法(0)

Java字符串上hashCode()的一致性

Java String的hashCode值计算为(String.hashCode()):

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

是否存在以下表达式将评估为false的任何情况(例如JVM版本,供应商等)?

boolean expression = "This is a Java string".hashCode() == 586653468
Run Code Online (Sandbox Code Playgroud)

更新#1:如果您声称答案是"是,有这种情况" - 那么请举一个具体的例子,说明"这是一个Java字符串".hashCode()!= 586653468.尝试具体/具体尽可能.

更新#2:我们都知道,依赖hashCode()的实现细节通常很糟糕.但是,我正在特别谈论String.hashCode() - 所以请将答案集中在String.hashCode()上.Object.hashCode()在这个问题的上下文中完全不相关.

java string hashcode

128
推荐指数
4
解决办法
12万
查看次数

object.GetHashCode()能否为不同机器上的相同对象(字符串)产生不同的结果?

是否有可能同一个对象,特别是一个string或任何原始或非常简单的类型(如a struct),.GetHashCode()在不同的机器上调用时产生不同的方法值?

例如,表达式是否可以"Hello World".GetHashCode()在不同的机器上生成不同的值.我主要是要求C#.NET,但我想这可能适用于Java甚至其他语言?

编辑:

从下面的答案和评论中.GetHashCode()可以看出,我知道可以覆盖,并且不能保证它在不同版本的框架之间产生的结果.因此,重要的是要澄清我有简单的类型(不能继承,因此GetHashCode()被覆盖),我在所有机器上使用相同版本的框架.

.net c# string hashcode

9
推荐指数
1
解决办法
3872
查看次数

标签 统计

hashcode ×2

string ×2

.net ×1

c# ×1

java ×1