org.apache.lucene.util
Class WeakIdentityMap<K,V>

java.lang.Object
  extended by org.apache.lucene.util.WeakIdentityMap<K,V>

public final class WeakIdentityMap<K,V>
extends Object

Implements a combination of WeakHashMap and IdentityHashMap. Useful for caches that need to key off of a == comparison instead of a .equals.

This class is not a general-purpose Map implementation! It intentionally violates Map's general contract, which mandates the use of the equals method when comparing objects. This class is designed for use only in the rare cases wherein reference-equality semantics are required.

This implementation was forked from Apache CXF but modified to not implement the Map interface and without any set/iterator views on it, as those are error-prone and inefficient, if not implemented carefully. Lucene's implementation also supports null keys, but those are never weak!

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

Method Summary
 void clear()
           
 boolean containsKey(Object key)
           
 V get(Object key)
           
 boolean isEmpty()
           
static
<K,V> WeakIdentityMap<K,V>
newConcurrentHashMap()
          Creates a new WeakIdentityMap based on a ConcurrentHashMap.
static
<K,V> WeakIdentityMap<K,V>
newHashMap()
          Creates a new WeakIdentityMap based on a non-synchronized HashMap.
 V put(K key, V value)
           
 V remove(Object key)
           
 int size()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

newHashMap

public static final <K,V> WeakIdentityMap<K,V> newHashMap()
Creates a new WeakIdentityMap based on a non-synchronized HashMap.


newConcurrentHashMap

public static final <K,V> WeakIdentityMap<K,V> newConcurrentHashMap()
Creates a new WeakIdentityMap based on a ConcurrentHashMap.


clear

public void clear()

containsKey

public boolean containsKey(Object key)

get

public V get(Object key)

put

public V put(K key,
             V value)

isEmpty

public boolean isEmpty()

remove

public V remove(Object key)

size

public int size()