java.lang.Object | ||||
↳ | java.util.AbstractMap<K, V> | |||
↳ | org.apache.commons.collections.map.AbstractHashedMap | |||
↳ | org.apache.commons.collections.map.AbstractReferenceMap | |||
↳ | org.apache.commons.collections.map.ReferenceIdentityMap |
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 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 synchronizedMap(Map
to
provide 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()
.
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 synchronizedMap(Map
. This class may throw
exceptions when accessed by concurrent threads without synchronization.
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.apache.commons.collections.map.AbstractReferenceMap
| |||||||||||
From class
org.apache.commons.collections.map.AbstractHashedMap
|
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.apache.commons.collections.map.AbstractReferenceMap
| |||||||||||
From class
org.apache.commons.collections.map.AbstractHashedMap
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new
ReferenceIdentityMap that will
use hard references to keys and soft references to values. | |||||||||||
Constructs a new
ReferenceIdentityMap that will
use the specified types of references. | |||||||||||
Constructs a new
ReferenceIdentityMap that will
use the specified types of references. | |||||||||||
Constructs a new
ReferenceIdentityMap with the
specified reference types, load factor and initial capacity. | |||||||||||
Constructs a new
ReferenceIdentityMap with the
specified reference types, load factor and initial capacity. |
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Gets the hash code for the key specified.
| |||||||||||
Gets the hash code for a MapEntry.
| |||||||||||
Compares two keys for equals.
| |||||||||||
Compares two values for equals.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.apache.commons.collections.map.AbstractReferenceMap
| |||||||||||
From class
org.apache.commons.collections.map.AbstractHashedMap
| |||||||||||
From class
java.util.AbstractMap
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
java.util.Map
| |||||||||||
From interface
org.apache.commons.collections.IterableMap
|
Constructs a new ReferenceIdentityMap
that will
use hard references to keys and soft references to values.
Constructs a new ReferenceIdentityMap
that will
use the specified types of references.
Constructs a new ReferenceIdentityMap
with the
specified reference types, load factor and initial capacity.
Constructs a new 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 map |
loadFactor | the load factor for the map |
purgeValues | should the value be automatically purged when the key is garbage collected |
Gets the hash code for the key specified.
This implementation uses the identity hash code.
key | the key to get a hash code for |
---|
Gets the hash code for a MapEntry.
This implementation uses the identity hash code.
key | the key to get a hash code for, may be null |
---|---|
value | the value to get a hash code for, may be null |
Compares two keys for equals.
This implementation converts the key from the entry to a real reference
before comparison and uses ==
.
key1 | the first key to compare passed in from outside |
---|---|
key2 | the second key extracted from the entry via entry.key |
Compares two values for equals.
This implementation uses ==
.
value1 | the first value to compare passed in from outside |
---|---|
value2 | the second value extracted from the entry via getValue() |