基本上,我使用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和负数的行为的问题。