Class 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 views on it, as those are error-prone and inefficient, if not implemented carefully. The map only contains Iterator implementations on the values and not-GCed keys. 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 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()
      • keyIterator

        public Iterator<K> keyIterator()
        Returns an iterator over all weak keys of this map. Keys already garbage collected will not be returned. This Iterator does not support removals.
      • valueIterator

        public Iterator<V> valueIterator()
        Returns an iterator over all values of this map. This iterator may return values whose key is already garbage collected while iterator is consumed.