基本上,我使用Objects类中的hasCode()来获取某些字符串的哈希码。

我希望该数字表示数组中的位置。基本上是一个哈希表。
我还没有为此编写代码。

我想到了:

 int hashNumber = SomeString.hascode(), pos;
 String array[] = new String[10];

 if (hashNumber > 0)
   pos = hashNumber % array.length
 if (hasNumber < 0 )
   //dont know what to do


我确实知道hashCode可以返回负整数。
如果它的负整数怎么办?
我虽然关于增加数组长度

  pos = hashNumber + array.length


这是最好的方法吗?

提前致谢

最佳答案

如果hashNumber为负,则只需获取-hashNumber的模(将为正):

if (hashNumber >= 0)
  pos = hashNumber % array.length
else
  pos = -hashNumber % array.length


或适用于两种情况的单个表达式:

pos = (hashNumber % array.length + array.length) % array.length


参见this answer,了解有关Java使用mod和负数的行为的问题。

09-26 12:58