protected void ensureCapacity ( int newCapacity ) { int oldCapacity = data . length ; if ( newCapacity <= oldCapacity ) { return ; } if ( size == 0 ) { threshold = calculateThreshold ( newCapacity , loadFactor ) ; data = new HashEntry [ newCapacity ] ; } else { HashEntry < K , V > oldEntries [ ] = data ; HashEntry < K , V > newEntries [ ] = new HashEntry [ newCapacity ] ; modCount ++ ; for ( int i = oldCapacity - 1 ; i >= 0 ; i -- ) { HashEntry < K , V > entry = oldEntries [ i ] ; if ( entry != null ) { oldEntries [ i ] = null ; // gc do { HashEntry < K , V > next = entry . next ; int index = hashIndex ( entry . hashCode , newCapacity ) ; entry . next = newEntries [ index ] ; newEntries [ index ] = entry ; entry = next ; } while ( entry != null ) ; } } threshold = calculateThreshold ( newCapacity , loadFactor ) ; data = newEntries ; } }
Changes the size of the data structure to the capacity proposed .