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

    java.lang.Object
      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 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 Summary
`void` `clear()`
`boolean` `containsKey(Object key)`
`V` `get(Object key)`
`boolean` `isEmpty()`
`Iterator<K>` `keyIterator()` Returns an iterator over all weak keys of this map.

`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()`
`Iterator<V>` `valueIterator()` Returns an iterator over all values of this map.

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()

### 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.