| 90 | } |
| 91 | |
| 92 | private void rehash() { |
| 93 | int size = size(); |
| 94 | int newCapacity = capacity * 2; |
| 95 | free = capacity = newCapacity; |
| 96 | int len = Numbers.ceilPow2((int) (newCapacity / loadFactor)); |
| 97 | |
| 98 | int[] oldValues = values; |
| 99 | int[] oldKeys = keys; |
| 100 | this.keys = new int[len]; |
| 101 | this.values = new int[len]; |
| 102 | Arrays.fill(keys, noEntryKeyValue); |
| 103 | mask = len - 1; |
| 104 | |
| 105 | free -= size; |
| 106 | for (int i = oldKeys.length; i-- > 0; ) { |
| 107 | int key = oldKeys[i]; |
| 108 | if (key != noEntryKeyValue) { |
| 109 | final int index = keyIndex(key); |
| 110 | keys[index] = key; |
| 111 | values[index] = oldValues[i]; |
| 112 | } |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | @Override |
| 117 | protected void erase(int index) { |