private void ensureCapacity ( int minCapacity ) { if ( nextInBucketKToV . length < minCapacity ) { int oldCapacity = nextInBucketKToV . length ; int newCapacity = ImmutableCollection . Builder . expandedCapacity ( oldCapacity , minCapacity ) ; keys = Arrays . copyOf ( keys , newCapacity ) ; values = Arrays . copyOf ( values , newCapacity ) ; nextInBucketKToV = expandAndFillWithAbsent ( nextInBucketKToV , newCapacity ) ; nextInBucketVToK = expandAndFillWithAbsent ( nextInBucketVToK , newCapacity ) ; prevInInsertionOrder = expandAndFillWithAbsent ( prevInInsertionOrder , newCapacity ) ; nextInInsertionOrder = expandAndFillWithAbsent ( nextInInsertionOrder , newCapacity ) ; } if ( hashTableKToV . length < minCapacity ) { int newTableSize = Hashing . closedTableSize ( minCapacity , 1.0 ) ; hashTableKToV = createFilledWithAbsent ( newTableSize ) ; hashTableVToK = createFilledWithAbsent ( newTableSize ) ; for ( int entryToRehash = 0 ; entryToRehash < size ; entryToRehash ++ ) { int keyHash = Hashing . smearedHash ( keys [ entryToRehash ] ) ; int keyBucket = bucket ( keyHash ) ; nextInBucketKToV [ entryToRehash ] = hashTableKToV [ keyBucket ] ; hashTableKToV [ keyBucket ] = entryToRehash ; int valueHash = Hashing . smearedHash ( values [ entryToRehash ] ) ; int valueBucket = bucket ( valueHash ) ; nextInBucketVToK [ entryToRehash ] = hashTableVToK [ valueBucket ] ; hashTableVToK [ valueBucket ] = entryToRehash ; } } }
Ensures that all of the internal structures in the HashBiMap are ready for this many elements .