private void init(int capacity) { if (capacity < HashUtil.MIN_CAPACITY) { capacity = HashUtil.MIN_CAPACITY; } allocateTable(HashUtil.getCeilingPrime((int) (capacity / loadFactor))); this.capacity = capacity; size = 0; }
private void rehash(int capacity) { final int length = HashUtil.getCeilingPrime((int) (capacity / loadFactor)); this.capacity = capacity; if (length != table.length) { final Iterator<Map.Entry<Integer, V>> entries = entrySet().iterator(); allocateTable(length); final Entry<V>[] table = this.table; final int mask = this.mask; while (entries.hasNext()) { final Entry<V> e = (Entry<V>) entries.next(); final int index = HashUtil.indexFor(e.key, length, mask); e.hashNext = table[index]; table[index] = e; } } }
private void rehash(int capacity) { final int length = HashUtil.getCeilingPrime((int) (capacity / loadFactor)); this.capacity = capacity; if (length != table.length) { final Iterator<Entry> entries = new RehashIterator(); allocateTable(length); final Entry[] table = this.table; final int shift = this.shift; final int mask = this.mask; while (entries.hasNext()) { final Entry e = entries.next(); final int index = HashUtil.indexFor(e.key, length, shift, mask); e.hashNext = table[index]; table[index] = e; } } }