org.cojen.util
Class WeakIdentityMap<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
org.cojen.util.WeakIdentityMap<K,V>
- All Implemented Interfaces:
- Cloneable, Map<K,V>
public class WeakIdentityMap<K,V>
- extends AbstractMap<K,V>
- implements Map<K,V>, Cloneable
WeakIdentityMap is like WeakHashMap, except it uses a key's identity
hashcode and equals methods. WeakIdentityMap is not thread-safe and must be
wrapped with Collections.synchronizedMap to be made thread-safe.
The documentation for WeakHashMap states that it is intended primarily for
use with key objects whose equals methods test for object identity using the
== operator. Because WeakIdentityMap strictly follows this behavior, it is
better suited for this purpose.
Note: Weakly referenced entries may be automatically removed during
either accessor or mutator operations, possibly causing a concurrent
modification to be detected. Therefore, even if multiple threads are only
accessing this map, be sure to synchronize this map first. Also, do not
rely on the value returned by size() when using an iterator from this map.
The iterators may return less entries than the amount reported by size().
- Author:
- Brian S O'Neill
WeakIdentityMap
public WeakIdentityMap(int initialCapacity,
float loadFactor)
WeakIdentityMap
public WeakIdentityMap(int initialCapacity)
WeakIdentityMap
public WeakIdentityMap()
WeakIdentityMap
public WeakIdentityMap(Map<? extends K,? extends V> t)
size
public int size()
- Specified by:
size in interface Map<K,V>- Overrides:
size in class AbstractMap<K,V>
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty in interface Map<K,V>- Overrides:
isEmpty in class AbstractMap<K,V>
containsValue
public boolean containsValue(Object value)
- Specified by:
containsValue in interface Map<K,V>- Overrides:
containsValue in class AbstractMap<K,V>
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKey in interface Map<K,V>- Overrides:
containsKey in class AbstractMap<K,V>
get
public V get(Object key)
- Specified by:
get in interface Map<K,V>- Overrides:
get in class AbstractMap<K,V>
put
public V put(K key,
V value)
- Specified by:
put in interface Map<K,V>- Overrides:
put in class AbstractMap<K,V>
remove
public V remove(Object key)
- Specified by:
remove in interface Map<K,V>- Overrides:
remove in class AbstractMap<K,V>
putAll
public void putAll(Map<? extends K,? extends V> t)
- Specified by:
putAll in interface Map<K,V>- Overrides:
putAll in class AbstractMap<K,V>
clear
public void clear()
- Specified by:
clear in interface Map<K,V>- Overrides:
clear in class AbstractMap<K,V>
clone
public Object clone()
- Overrides:
clone in class AbstractMap<K,V>
keySet
public Set<K> keySet()
- Specified by:
keySet in interface Map<K,V>- Overrides:
keySet in class AbstractMap<K,V>
values
public Collection<V> values()
- Specified by:
values in interface Map<K,V>- Overrides:
values in class AbstractMap<K,V>
entrySet
public Set<Map.Entry<K,V>> entrySet()
- Specified by:
entrySet in interface Map<K,V>- Specified by:
entrySet in class AbstractMap<K,V>
toString
public String toString()
- Gets the map as a String.
- Overrides:
toString in class AbstractMap<K,V>
- Returns:
- a string version of the map
Copyright © 2004-2008 Brian S O'Neill. All Rights Reserved.