是否可以从其哈希码中取回 String 值?

Bra*_*raj 2 java string hashcode

方法String#hashCode() 的Java 文档说:

返回此字符串的哈希码。String 对象的哈希码计算如下

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

使用 int 算术,其中 s[i] 是字符串的第 i 个字符,n 是字符串的长度,^ 表示求幂。(空字符串的哈希值为零。)

问题:

  • 是否可以为具有不同值的两个字符串对象使用相同的哈希码?如果是,那么请分享一些例子。
  • 是否可以从其哈希码中取回 String 值?

我没有在代码中的任何地方使用它。我刚刚问这个问题是为了了解更多关于 Java String 类的信息。

das*_*ght 6

是否可以为具有不同值的两个字符串对象使用相同的哈希码?如果是,那么请分享一些例子。

以下是随机生成的具有相同哈希码的短字符串示例的小样本:

String 1   String 2   Common hash code
--------   --------   ----------------
VTBHKIGV - FLXCLLII        -1242944431
FPESRBAH - GNFWMYVA         1778061647
UYDHRTXL - HGCNRCBE         1509241566
VXQMFMDE - YMYXDWKK        -1553987354
VGWBSYRX - JZNQSUXK          700334696
Run Code Online (Sandbox Code Playgroud)

由于多个字符串可以共享相同的哈希码,因此无法从哈希恢复原始字符串。


Jig*_*shi 5

两个具有不同值的字符串对象是否可以具有相同的哈希码?

int是的,如果没有它,你怎么能映射无限的字符串可能性

是否可以从字符串的哈希码中获取字符串值?

不,读 1