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.collections15.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} 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 collecter removing entries.
All the available iterators can be reset back to the start by casting to
ResettableIterator
and calling
reset()
.
@author Matt Hall, John Watkinson, Stephen Colebourne
@version $Revision: 1.1 $ $Date: 2005/10/11 17:05:32 $
@see java.lang.ref.Reference
@since Commons Collections 3.0 (previously in main package v2.1)