2015-04-28 83 views
0

我在这里遇到问题。我应该解释为什么我的字符串“ab”返回当我使用hashCode()就可以了。字符串和哈希码需要说明

我的主要问题是我不明白s [0]具有哪个值。

S [0] * 31 ^(N-1)+ S [1] * 31 ^(N-2)+ ... + S [N-1]

有人可以解释呢? 谢谢。

+0

这有一个XY问题的所有标记。你试图解决的问题是什么,而不是你真正问到的问题? –

+0

真正的问题是我问的问题。在Java API中给出的公式中,我不知道s [0]或s [1]应该是什么值。如果我从公式读取 - s [0]应该给我的值1. – KimR

+0

不,这不是你真正的问题。没有合理的“真正的问题”涉及Java的哈希码计算的内部工作。你必须努力解决一些其他问题,并且你认为乱码散列码公式是无用的。不是。 –

回答

1

假设你有一个字符串s = "ab"

  1. s[0]s的第一个字母,意为"a"等。
    对于长度为n的字符串,最后一个索引将为n-1。即 长度s是2,s的最后一个字母是s[1],它是"b"
  2. ABC ..中的每个字母都有一个数字ascii值,您可以在ascii table中看到。

的字符串"ab"哈希码是

'a'*31^1+'b'*31^0 = 'a'*31+'b'*1 = 97*31+98*1 = 3105 
+0

啊哈,所以值是ASCII ..谢谢! – KimR