示例#1
0
 /**
  * Adds the value to the collection given by map.get(key). A new collection is created using the
  * supplied CollectionFactory.
  */
 public static <K, V, C extends Collection<V>> void putIntoValueCollection(
     Map<K, C> map, K key, V value, CollectionFactory<V> cf) {
   C c = map.get(key);
   if (c == null) {
     c = ErasureUtils.<C>uncheckedCast(cf.newCollection());
     map.put(key, c);
   }
   c.add(value);
 }
 /**
  * Reduces memory consumption to the minimum for representing the values currently stored stored
  * in this object.
  */
 public void compact() {
   if (keys.length > size) {
     Class[] newKeys = new Class[size];
     Object[] newValues = new Object[size];
     System.arraycopy(keys, 0, newKeys, 0, size);
     System.arraycopy(values, 0, newValues, 0, size);
     keys = ErasureUtils.uncheckedCast(newKeys);
     values = newValues;
   }
 }
 public void setCapacity(int newSize) {
   if (size > newSize) {
     throw new RuntimeException("You cannot set capacity to smaller than the current size.");
   }
   Class[] newKeys = new Class[newSize];
   Object[] newValues = new Object[newSize];
   System.arraycopy(keys, 0, newKeys, 0, size);
   System.arraycopy(values, 0, newValues, 0, size);
   keys = ErasureUtils.uncheckedCast(newKeys);
   values = newValues;
 }
 /**
  * Initializes this ArrayCoreMap, pre-allocating arrays to hold up to capacity key,value pairs.
  * This array will grow if necessary.
  *
  * @param capacity Initial capacity of object in key,value pairs
  */
 public ArrayCoreMap(int capacity) {
   keys = ErasureUtils.uncheckedCast(new Class[capacity]);
   values = new Object[capacity];
   // size starts at 0
 }