/** * @param initialCapacity for the map to override {@link #MIN_CAPACITY} * @param loadFactor for the map to override {@link Hashing#DEFAULT_LOAD_FACTOR}. * @param missingValue for the map that represents null. * @param shouldAvoidAllocation should allocation be avoided by caching iterators and map entries. */ public Int2IntHashMap( @DoNotSub final int initialCapacity, @DoNotSub final float loadFactor, final int missingValue, final boolean shouldAvoidAllocation) { validateLoadFactor(loadFactor); this.loadFactor = loadFactor; this.missingValue = missingValue; this.shouldAvoidAllocation = shouldAvoidAllocation; capacity(findNextPositivePowerOfTwo(Math.max(MIN_CAPACITY, initialCapacity))); }
private void rehash(@DoNotSub final int newCapacity) { final int[] oldEntries = entries; final int missingValue = this.missingValue; @DoNotSub final int length = entries.length; capacity(newCapacity); final int[] newEntries = entries; @DoNotSub final int mask = entries.length - 1; for (@DoNotSub int keyIndex = 0; keyIndex < length; keyIndex += 2) { final int value = oldEntries[keyIndex + 1]; if (value != missingValue) { final int key = oldEntries[keyIndex]; @DoNotSub int index = Hashing.evenHash(key, mask); while (newEntries[index + 1] != missingValue) { index = next(index, mask); } newEntries[index] = key; newEntries[index + 1] = value; } } }
/** * @param initialCapacity for the map to override {@link #MIN_CAPACITY} * @param loadFactor for the map to override {@link Hashing#DEFAULT_LOAD_FACTOR}. * @param missingValue for the map that represents null. * @param shouldAvoidAllocation should allocation be avoided by caching iterators and map entries. */ public Int2IntHashMap( @DoNotSub final int initialCapacity, @DoNotSub final float loadFactor, final int missingValue, final boolean shouldAvoidAllocation) { validateLoadFactor(loadFactor); this.loadFactor = loadFactor; this.missingValue = missingValue; this.shouldAvoidAllocation = shouldAvoidAllocation; capacity(findNextPositivePowerOfTwo(Math.max(MIN_CAPACITY, initialCapacity))); }
private void rehash(@DoNotSub final int newCapacity) { final int[] oldEntries = entries; final int missingValue = this.missingValue; @DoNotSub final int length = entries.length; capacity(newCapacity); for (@DoNotSub int i = 0; i < length; i += 2) { final int key = oldEntries[i]; if (key != missingValue) { put(key, oldEntries[i + 1]); } } }
@SuppressWarnings("unchecked") public Int2IntHashMap( @DoNotSub final int initialCapacity, @DoNotSub final float loadFactor, final int missingValue) { validateLoadFactor(loadFactor); this.loadFactor = loadFactor; this.missingValue = missingValue; capacity(BitUtil.findNextPositivePowerOfTwo(initialCapacity)); keySet = new KeySet(); values = new Values(); entrySet = new EntrySet(); }
private void rehash(@DoNotSub final int newCapacity) { final int[] oldEntries = entries; final int missingValue = this.missingValue; @DoNotSub final int length = entries.length; capacity(newCapacity); final int[] newEntries = entries; @DoNotSub final int mask = entries.length - 1; for (@DoNotSub int keyIndex = 0; keyIndex < length; keyIndex += 2) { final int value = oldEntries[keyIndex + 1]; if (value != missingValue) { final int key = oldEntries[keyIndex]; @DoNotSub int index = Hashing.evenHash(key, mask); while (newEntries[index + 1] != missingValue) { index = next(index, mask); } newEntries[index] = key; newEntries[index + 1] = value; } } }