public class ReferenceIdentityMap<K,V> extends AbstractReferenceMap<K,V> implements java.io.Serializable
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 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
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 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 Collections.synchronizedMap(java.util.Map<K, V>)
to
provide 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 Collections.synchronizedMap(java.util.Map<K, V>)
. This class may throw
exceptions when accessed by concurrent threads without synchronization.
Reference
,
Serialized FormAbstractReferenceMap.ReferenceStrength
Constructor and Description |
---|
ReferenceIdentityMap()
Constructs a new
ReferenceIdentityMap that will
use hard references to keys and soft references to values. |
ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType,
AbstractReferenceMap.ReferenceStrength valueType)
Constructs a new
ReferenceIdentityMap that will
use the specified types of references. |
ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType,
AbstractReferenceMap.ReferenceStrength valueType,
boolean purgeValues)
Constructs a new
ReferenceIdentityMap that will
use the specified types of references. |
ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType,
AbstractReferenceMap.ReferenceStrength valueType,
int capacity,
float loadFactor)
Constructs a new
ReferenceIdentityMap with the
specified reference types, load factor and initial capacity. |
ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType,
AbstractReferenceMap.ReferenceStrength valueType,
int capacity,
float loadFactor,
boolean purgeValues)
Constructs a new
ReferenceIdentityMap with the
specified reference types, load factor and initial capacity. |
clear, containsKey, containsValue, entrySet, get, isEmpty, keySet, mapIterator, put, remove, size, values
equals, hashCode, putAll, toString
public ReferenceIdentityMap()
ReferenceIdentityMap
that will
use hard references to keys and soft references to values.public ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType)
ReferenceIdentityMap
that will
use the specified types of references.public ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, boolean purgeValues)
ReferenceIdentityMap
that will
use the specified types of references.public ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, int capacity, float loadFactor)
ReferenceIdentityMap
with the
specified reference types, load factor and initial capacity.public ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, int capacity, float loadFactor, boolean purgeValues)
ReferenceIdentityMap
with the
specified reference types, load factor and initial capacity.keyType
- the type of reference to use for keys;
must be HARD
,
SOFT
,
WEAK
valueType
- the type of reference to use for values;
must be HARD
,
SOFT
,
WEAK
capacity
- the initial capacity for the maploadFactor
- the load factor for the mappurgeValues
- should the value be automatically purged when the
key is garbage collected"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"