|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.util.AbstractMap<K,V>
org.apache.commons.collections4.map.AbstractHashedMap<K,V>
org.apache.commons.collections4.map.AbstractReferenceMap<K,V>
org.apache.commons.collections4.map.ReferenceIdentityMap<K,V>
public class ReferenceIdentityMap<K,V>
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 Collections.synchronizedMap(java.util.Map
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
. This class may throw
exceptions when accessed by concurrent threads without synchronization.
Reference
,
Serialized FormNested Class Summary |
---|
Nested classes/interfaces inherited from class org.apache.commons.collections4.map.AbstractReferenceMap |
---|
AbstractReferenceMap.ReferenceEntry<K,V>, AbstractReferenceMap.ReferenceStrength |
Nested classes/interfaces inherited from class org.apache.commons.collections4.map.AbstractHashedMap |
---|
AbstractHashedMap.EntrySet<K,V>, AbstractHashedMap.EntrySetIterator<K,V>, AbstractHashedMap.HashEntry<K,V>, AbstractHashedMap.HashIterator<K,V>, AbstractHashedMap.HashMapIterator<K,V>, AbstractHashedMap.KeySet<K>, AbstractHashedMap.KeySetIterator<K>, AbstractHashedMap.Values<V>, AbstractHashedMap.ValuesIterator<V> |
Nested classes/interfaces inherited from interface java.util.Map |
---|
Map.Entry<K,V> |
Field Summary |
---|
Fields inherited from class org.apache.commons.collections4.map.AbstractHashedMap |
---|
DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD, GETKEY_INVALID, GETVALUE_INVALID, MAXIMUM_CAPACITY, NO_NEXT_ENTRY, NO_PREVIOUS_ENTRY, NULL, REMOVE_INVALID, SETVALUE_INVALID |
Constructor Summary | |
---|---|
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. |
Method Summary | |
---|---|
protected int |
hash(Object key)
Gets the hash code for the key specified. |
protected int |
hashEntry(Object key,
Object value)
Gets the hash code for a MapEntry. |
protected boolean |
isEqualKey(Object key1,
Object key2)
Compares two keys for equals. |
protected boolean |
isEqualValue(Object value1,
Object value2)
Compares two values for equals. |
Methods inherited from class org.apache.commons.collections4.map.AbstractReferenceMap |
---|
clear, containsKey, containsValue, createEntry, createEntrySetIterator, createKeySetIterator, createValuesIterator, doReadObject, doWriteObject, entrySet, get, getEntry, init, isEmpty, isKeyType, keySet, mapIterator, purge, purge, purgeBeforeRead, purgeBeforeWrite, put, remove, size, values |
Methods inherited from class org.apache.commons.collections4.map.AbstractHashedMap |
---|
addEntry, addMapping, calculateNewCapacity, calculateThreshold, checkCapacity, clone, convertKey, destroyEntry, ensureCapacity, entryHashCode, entryKey, entryNext, entryValue, equals, hashCode, hashIndex, putAll, removeEntry, removeMapping, reuseEntry, toString, updateEntry |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
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.
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
public ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, boolean purgeValues)
ReferenceIdentityMap
that will
use the specified types of references.
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
purgeValues
- should the value be automatically purged when the
key is garbage collectedpublic ReferenceIdentityMap(AbstractReferenceMap.ReferenceStrength keyType, AbstractReferenceMap.ReferenceStrength valueType, int capacity, float loadFactor)
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 mappublic 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 collectedMethod Detail |
---|
protected int hash(Object key)
This implementation uses the identity hash code.
hash
in class AbstractHashedMap<K,V>
key
- the key to get a hash code for
protected int hashEntry(Object key, Object value)
This implementation uses the identity hash code.
hashEntry
in class AbstractReferenceMap<K,V>
key
- the key to get a hash code for, may be nullvalue
- the value to get a hash code for, may be null
protected boolean isEqualKey(Object key1, Object key2)
This implementation converts the key from the entry to a real reference
before comparison and uses ==
.
isEqualKey
in class AbstractReferenceMap<K,V>
key1
- the first key to compare passed in from outsidekey2
- the second key extracted from the entry via entry.key
protected boolean isEqualValue(Object value1, Object value2)
This implementation uses ==
.
isEqualValue
in class AbstractHashedMap<K,V>
value1
- the first value to compare passed in from outsidevalue2
- the second value extracted from the entry via getValue()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |