android/guava/src/com/google/common/collect/HashBiMap.java
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;
      }
    }
  }
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;
      }
    }
  }
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.
Ensures that all of the internal structures in the HashBiMap are ready for this many elements .