protected ReferenceValueMap(SortedMap<K, ValueRef<K, V>> sorted) { map = createMap(sorted); }
@Override public V put(K key, V value) { processQueue(); ValueRef<K, V> ref = create(key, value, queue); ValueRef<K, V> result = map.put(key, ref); if (result != null) return result.get(); return null; }
@Override public boolean containsKey(Object key) { processQueue(); return map.containsKey(key); }
protected ReferenceValueMap(Map<K, V> t) { this(Math.max(2*t.size(), 11), 0.75f); putAll(t); }
@Override public int size() { processQueue(); return map.size(); }
@Override public void clear() { processQueue(); map.clear(); }
protected ReferenceValueMap(int initialCapacity, float loadFactor) { map = createMap(initialCapacity, loadFactor); }
@Override public V get(Object key) { processQueue(); ValueRef<K, V> ref = map.get(key); if (ref != null) return ref.get(); return null; }
protected ReferenceValueMap() { map = createMap(); }
@Override public V remove(Object key) { processQueue(); ValueRef<K, V> result = map.remove(key); if (result != null) return result.get(); return null; }
protected ReferenceValueMap(int initialCapacity) { map = createMap(initialCapacity); }
@Override public Set<Entry<K,V>> entrySet() { processQueue(); return new EntrySet(); }
protected ReferenceValueMap(Comparator<K> comparator) { map = createMap(comparator); }