0
배열의 크기를 50 %로 조정 한 다음 다시 해보려고합니다. 현재 배열 크기를 두 배로 늘린 다음 재연 해 보았지만 50 % (100 %) 늘리는 방법을 모르겠습니다. 여기배열 크기를 50 %로 조정하는 방법
내 코드 내 일부입니다
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;
}
}
}
나는 50 % 증가 내 재탕() 메소드를 변경 얼마나
?
어딘가에 int로 캐스팅해야한다고 가정하고 있지만 제대로 작동하지 않습니다. 나는 ArrayList가 아니라 ArrayList를 사용하고 싶다.
'Math.abs (value)'와 조심해야합니다. 항상 긍정적 인 것은 아닙니다. – harold
Integer.parseInt (value)가 더 나은 옵션이 될까요? 어떤 다른 옵션을 사용할 수 있습니까? – AmyF
'parseInt'는 전혀 옵션이 아니지만'value & Integer.MAX_VALUE' 또는'value >>> 1'은 분명히 부정적이 아닙니다. Java9에서는 'Integer.remainderUnsigned'를 사용하여 해시에서 비트를 전혀 버리지 않아도됩니다. 또는 다른 옵션 :'if (value <0) value^= -1;' – harold