This Map implementation has a API that is very
similar to HashMap, and uses an internal
hashtable, like HashMap does. However, it behaves
differently from HashMap in one very important
way. When testing two keys to see if they are equal,
HashMap, LinkedHashMap and
treeMap use the equals( )
method to determine whether the two objects are indistinguishable in
terms of their content or state. IdentityHashMap
is different: it uses the == operator to determine
whether the two key objects are identicalwhether they are
exactly the same object. This one difference in how key equality is
tested has profound ramifications for the behavior of the
Map. In most cases, the equality testing of a
HashMap, LinkedHashMap or
TReeMap is the appropriate behavior, and you
should use one of those classes. For certain purposes, however, the
identity testing of IdentityHashMap is what is
required.
public class
IdentityHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,
Serializable, Cloneable {
// Public Constructors
public
IdentityHashMap ( );
public
IdentityHashMap (int
expectedMaxSize );
public
IdentityHashMap (Map<? extends K,? extends V>
m );
// Methods Implementing Map
public void
clear ( );
public boolean
containsKey (Object
key );
public boolean
containsValue (Object
value );
public Set<Map.Entry<K,V>>
entrySet ( );
public boolean
equals (Object
o );
public V
get (Object
key );
public int
hashCode ( );
public boolean
isEmpty ( ); default:true
public Set<K>
keySet ( );
public V
put (K
key , V
value );
public void
putAll (Map<? extends K,? extends V>
t );
public V
remove (Object
key );
public int
size ( );
public Collection<V>
values ( );
// Public Methods Overriding AbstractMap
public Object
clone ( );
}