private int removeNullEntry() { containsNullKey = false; key[n] = null; final int oldValue = value[n]; size--; fixPointers(n); if (n > minN && size < maxFill / 4 && n > DEFAULT_INITIAL_SIZE) rehash(n / 2); return oldValue; } @Override
/** * Shifts left entries with the specified hash code, starting at the specified * position, and empties the resulting free entry. * * @param pos * a starting position. */ protected final void shiftKeys(int pos) { // Shift entries with the same hash. int last, slot; K curr; final K[] key = this.key; for (;;) { pos = ((last = pos) + 1) & mask; for (;;) { if (((curr = key[pos]) == (null))) { key[last] = (null); return; } slot = (it.unimi.dsi.fastutil.HashCommon.mix(System.identityHashCode(curr))) & mask; if (last <= pos ? last >= slot || slot > pos : last >= slot && slot > pos) break; pos = (pos + 1) & mask; } key[last] = curr; value[last] = value[pos]; fixPointers(pos, last); } } @Override
private int removeEntry(final int pos) { final int oldValue = value[pos]; size--; fixPointers(pos); shiftKeys(pos); if (n > minN && size < maxFill / 4 && n > DEFAULT_INITIAL_SIZE) rehash(n / 2); return oldValue; } private int removeNullEntry() {