public void ensureCapacity(int capacity){
  if (mGarbage && mSize >= mKeys.length) {
    gc();
  }
  if (mKeys.length < capacity) {
    int[] nkeys=new int[capacity];
    Object[] nvalues=new Object[capacity];
    System.arraycopy(mKeys,0,nkeys,0,mKeys.length);
    System.arraycopy(mValues,0,nvalues,0,mValues.length);
    mKeys=nkeys;
    mValues=nvalues;
  }
}

public void ensureCapacity ( int capacity ) { if ( mGarbage && mSize >= mKeys . length ) { gc ( ) ; } if ( mKeys . length < capacity ) { int [ ] nkeys = new int [ capacity ] ; Object [ ] nvalues = new Object [ capacity ] ; System . arraycopy ( mKeys , 0 , nkeys , 0 , mKeys . length ) ; System . arraycopy ( mValues , 0 , nvalues , 0 , mValues . length ) ; mKeys = nkeys ; mValues = nvalues ; } }
increases the size of the underlying storage if needed , to ensure that it can hold the specified number of items without having to allocate additional memory
