|
|||||||||
| Home >> All >> com >> go >> trove >> [ util overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
com.go.trove.util
Class IdentityMap

java.lang.Objectjava.util.AbstractMap
com.go.trove.util.IdentityMap
- All Implemented Interfaces:
- java.lang.Cloneable, java.util.Map
- public class IdentityMap
- extends java.util.AbstractMap
- implements java.util.Map, java.lang.Cloneable
- extends java.util.AbstractMap
An IdentityMap is like WeakHashMap, except it uses a key's identity hashcode and equals methods. IdentityMap is not thread-safe and must be wrapped with Collections.synchronizedMap to be made thread-safe. Most of the implementation for this class is ripped off from java.util.HashMap, but not java.util.WeakHashMap, in order to acheive greater efficiency.
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 WeakHashMap uses a key's own equals and
hashcode methods, it is better suited for implementing methods that behave
like String.intern()>String.intern() 55 . However, because WeakHashMap stongly references
values, Utils.intern 55 provides a safer intern mechanism.
In this implementation, all key objects are tested for equality using the == operator, and null keys are not permitted. IdentityMap is therefore better suited for "canonicalized" mappings.
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().
- Version:
- 19 , 00/12/18
| Nested Class Summary | |
private static class |
IdentityMap.Entry
HashMap collision list entry. |
private class |
IdentityMap.HashIterator
|
| Nested classes inherited from class java.util.AbstractMap |
|
| Field Summary | |
(package private) static java.util.Iterator |
cEmptyHashIterator
|
(package private) static int |
ENTRIES
|
(package private) static int |
KEYS
|
private int |
mCount
The total number of mappings in the hash table. |
private java.util.Set |
mEntrySet
|
private java.util.Set |
mKeySet
|
private float |
mLoadFactor
The load factor for the hashtable. |
private int |
mModCount
The number of times this HashMap has been structurally modified Structural modifications are those that change the number of mappings in the HashMap or otherwise modify its internal structure (e.g., rehash). |
private IdentityMap.Entry[] |
mTable
The hash table data. |
private int |
mThreshold
The table is rehashed when its size exceeds this threshold. |
private java.util.Collection |
mValues
|
(package private) static int |
VALUES
|
| Fields inherited from class java.util.AbstractMap |
|
| Constructor Summary | |
IdentityMap()
Constructs a new, empty map with a default capacity and load factor, which is 0.75. |
|
IdentityMap(int initialCapacity)
Constructs a new, empty map with the specified initial capacity and default load factor, which is 0.75. |
|
IdentityMap(int initialCapacity,
float loadFactor)
Constructs a new, empty map with the specified initial capacity and the specified load factor. |
|
IdentityMap(java.util.Map t)
Constructs a new map with the same mappings as the given map. |
|
| Method Summary | |
private void |
cleanup()
Scans the contents of this map, removing all entries that have a cleared weak key. |
void |
clear()
Removes all mappings from this map. |
java.lang.Object |
clone()
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned. |
boolean |
containsKey(java.lang.Object key)
Returns true if this map contains a mapping for the specified key. |
boolean |
containsValue(java.lang.Object value)
Returns true if this map maps one or more keys to the specified value. |
java.util.Set |
entrySet()
Returns a collection view of the mappings contained in this map. |
java.lang.Object |
get(java.lang.Object key)
Returns the value to which this map maps the specified key. |
private java.util.Iterator |
getHashIterator(int type)
|
boolean |
isEmpty()
Returns true if this map contains no key-value mappings. |
java.util.Set |
keySet()
Returns a set view of the keys contained in this map. |
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
Associates the specified value with the specified key in this map. |
void |
putAll(java.util.Map t)
Copies all of the mappings from the specified map to this one. |
private void |
rehash()
Rehashes the contents of this map into a new HashMap instance with a larger capacity. |
java.lang.Object |
remove(java.lang.Object key)
Removes the mapping for this key from this map if present. |
int |
size()
Returns the number of key-value mappings in this map, but this value may be larger than actual amount of entries produced by an iterator. |
java.lang.String |
toString()
Returns a String representation of this map. |
(package private) static java.lang.String |
toString(java.util.Collection c)
Converts a string to a collection without calling size(). |
java.util.Collection |
values()
Returns a collection view of the values contained in this map. |
| Methods inherited from class java.util.AbstractMap |
equals, hashCode |
| Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface java.util.Map |
equals, hashCode |
| Field Detail |
KEYS
static final int KEYS
- See Also:
- Constant Field Values
VALUES
static final int VALUES
- See Also:
- Constant Field Values
ENTRIES
static final int ENTRIES
- See Also:
- Constant Field Values
cEmptyHashIterator
static final java.util.Iterator cEmptyHashIterator
mTable
private transient IdentityMap.Entry[] mTable
- The hash table data.
mCount
private transient int mCount
- The total number of mappings in the hash table.
mThreshold
private int mThreshold
- The table is rehashed when its size exceeds this threshold. (The
value of this field is (int)(capacity * loadFactor).)
mLoadFactor
private float mLoadFactor
- The load factor for the hashtable.
mModCount
private transient int mModCount
- The number of times this HashMap has been structurally modified
Structural modifications are those that change the number of mappings in
the HashMap or otherwise modify its internal structure (e.g.,
rehash). This field is used to make iterators on Collection-views of
the HashMap fail-fast. (See ConcurrentModificationException).
mKeySet
private transient java.util.Set mKeySet
mEntrySet
private transient java.util.Set mEntrySet
mValues
private transient java.util.Collection mValues
| Constructor Detail |
IdentityMap
public IdentityMap(int initialCapacity,
float loadFactor)
- Constructs a new, empty map with the specified initial
capacity and the specified load factor.
IdentityMap
public IdentityMap(int initialCapacity)
- Constructs a new, empty map with the specified initial capacity
and default load factor, which is 0.75.
IdentityMap
public IdentityMap()
- Constructs a new, empty map with a default capacity and load
factor, which is 0.75.
IdentityMap
public IdentityMap(java.util.Map t)
- Constructs a new map with the same mappings as the given map. The
map is created with a capacity of twice the number of mappings in
the given map or 11 (whichever is greater), and a default load factor,
which is 0.75.
| Method Detail |
toString
static java.lang.String toString(java.util.Collection c)
- Converts a string to a collection without calling size(). Iterators from
this map may return less entries than the amount reported by size().
size
public int size()
- Returns the number of key-value mappings in this map, but this value
may be larger than actual amount of entries produced by an iterator.
- Specified by:
sizein interfacejava.util.Map
isEmpty
public boolean isEmpty()
- Returns true if this map contains no key-value mappings.
- Specified by:
isEmptyin interfacejava.util.Map
containsValue
public boolean containsValue(java.lang.Object value)
- Returns true if this map maps one or more keys to the
specified value.
- Specified by:
containsValuein interfacejava.util.Map
containsKey
public boolean containsKey(java.lang.Object key)
- Returns true if this map contains a mapping for the specified
key.
- Specified by:
containsKeyin interfacejava.util.Map
get
public java.lang.Object get(java.lang.Object key)
- Returns the value to which this map maps the specified key. Returns
null if the map contains no mapping for this key. A return
value of null does not necessarily indicate that the
map contains no mapping for the key; it's also possible that the map
explicitly maps the key to null. The containsKey
operation may be used to distinguish these two cases.
- Specified by:
getin interfacejava.util.Map
cleanup
private void cleanup()
- Scans the contents of this map, removing all entries that have a
cleared weak key.
rehash
private void rehash()
- Rehashes the contents of this map into a new HashMap instance
with a larger capacity. This method is called automatically when the
number of keys in this map exceeds its capacity and load factor.
put
public java.lang.Object put(java.lang.Object key, java.lang.Object value)
- Associates the specified value with the specified key in this map.
If the map previously contained a mapping for this key, the old
value is replaced.
- Specified by:
putin interfacejava.util.Map
remove
public java.lang.Object remove(java.lang.Object key)
- Removes the mapping for this key from this map if present.
- Specified by:
removein interfacejava.util.Map
putAll
public void putAll(java.util.Map t)
- Copies all of the mappings from the specified map to this one.
These mappings replace any mappings that this map had for any of the
keys currently in the specified Map.
- Specified by:
putAllin interfacejava.util.Map
clear
public void clear()
- Removes all mappings from this map.
- Specified by:
clearin interfacejava.util.Map
clone
public java.lang.Object clone()
- Returns a shallow copy of this HashMap instance: the keys and
values themselves are not cloned.
keySet
public java.util.Set keySet()
- Returns a set view of the keys contained in this map. The set is
backed by the map, so changes to the map are reflected in the set, and
vice-versa. The set supports element removal, which removes the
corresponding mapping from this map, via the Iterator.remove,
Set.remove, removeAll, retainAll, and
clear operations. It does not support the add or
addAll operations.
- Specified by:
keySetin interfacejava.util.Map
values
public java.util.Collection values()
- Returns a collection view of the values contained in this map. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from this map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
valuesin interfacejava.util.Map
entrySet
public java.util.Set entrySet()
- Returns a collection view of the mappings contained in this map. Each
element in the returned collection is a Map.Entry. The
collection is backed by the map, so changes to the map are reflected in
the collection, and vice-versa. The collection supports element
removal, which removes the corresponding mapping from the map, via the
Iterator.remove, Collection.remove,
removeAll, retainAll, and clear operations.
It does not support the add or addAll operations.
- Specified by:
entrySetin interfacejava.util.Map
toString
public java.lang.String toString()
- Description copied from class:
java.util.AbstractMap - Returns a String representation of this map. This is a listing of the
map entries (which are specified in Map.Entry as being
getKey() + "=" + getValue()), separated by a comma and space (", "), and surrounded by braces ('{' and '}'). This implementation uses a StringBuffer and iterates over the entrySet to build the String. Note that this can fail with an exception if underlying keys or values complete abruptly in toString().
getHashIterator
private java.util.Iterator getHashIterator(int type)
|
|||||||||
| Home >> All >> com >> go >> trove >> [ util overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC