我正在尝试将我的数组调整50%然后重新散列。我目前将它的数量增加一倍然后重新加入,但我不确定如何增加50%(相对于100%)。
以下是我的代码部分:
private int hashFunction(int value) {
return Math.abs(value) % elementData.length;
}
private double loadFactor() {
return (double) size / elementData.length;
}
// Resizes the hash table to twice its former size.
private void rehash() {
// replace element data array with a larger empty version
HashEntry[] oldElementData = elementData;
elementData = new HashEntry[2 * oldElementData.length];
size = 0;
// re-add all of the old data into the new array
for (int i = 0; i < oldElementData.length; i++) {
HashEntry current = oldElementData[i];
while (current != null) {
add(current.data);
current = current.next;
}
}
}
如何将rehash()方法更改为增加50%?
我假设我需要在某处转换为int但我无法让它工作。我想使用数组而不是ArrayList。
答案 0 :(得分:-1)
你不能只改变行
elementData = new HashEntry[2 * oldElementData.length];
这样的事情:
elementData = new HashEntry[(int)increase * oldElementData.length];
其中increase
是您想要的百分比增长。因此,如果你想要增加50%的大小,你会使用1.5。