A
Map
implementation that allows mappings to be removed by the garbage collector and matches keys and values based on
==
not
equals()
.
When you construct a ReferenceIdentityMap
, you can specify what kind of references are used to store the map's keys and values. If non-hard references are used, then the garbage collector can remove mappings if a key or value becomes unreachable, or if the JVM's memory is running low. For information on how the different reference types behave, see {@link Reference}.
Different types of references can be specified for keys and values. The default constructor uses hard keys and soft values, providing a memory-sensitive cache.
This map is similar to {@link org.apache.commons.collections4.map.ReferenceMap ReferenceMap}. It differs in that keys and values in this class are compared using ==
.
This map will violate the detail of various Map and map view contracts. As a general rule, don't compare this map to other maps.
This {@link java.util.Map Map} implementation does not allow null elements.Attempting to add a null key or value to the map will raise a NullPointerException
.
This implementation is not synchronized. You can use {@link java.util.Collections#synchronizedMap} toprovide synchronized access to a ReferenceIdentityMap
. Remember that synchronization will not stop the garbage collector removing entries.
All the available iterators can be reset back to the start by casting to ResettableIterator
and calling reset()
.
Note that ReferenceIdentityMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using {@link java.util.Collections#synchronizedMap}. This class may throw exceptions when accessed by concurrent threads without synchronization.
@see java.lang.ref.Reference
@since 3.0 (previously in main package v2.1)
@version $Id: ReferenceIdentityMap.java 1477799 2013-04-30 19:56:11Z tn $