public V remove(K key) { if (map.containsKey(key)) { V value = map.remove(key); unmanage(key, value); return value; } else { return null; } }
public void put(K key, V value) { // First, remove from map if it exists if (map.containsKey(key)) { V oldValue = map.remove(key); unmanage(key, oldValue); } // Add to map map.put(key, value); manage(key, value); // If an eldest element was removed, update byte count Map.Entry<K, V> eldestRemoved = map.getAndClearEldestRemoved(); if (eldestRemoved != null) { unmanage(eldestRemoved); } // Now remove elements until byte count is under the threshold if (numBytesCapacity >= 0) { while (numManagedBytes > numBytesCapacity && map.size() > 0) { Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator(); Map.Entry<K, V> eldest = iterator.next(); unmanage(eldest); iterator.remove(); } } }
public int size() { return map.size(); }
public V get(K key) { return map.get(key); }