IdentityHashMap<K,V> | java.util | Java 1.4 | cloneable serializable collection | 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. Figure 16-27. java.util.IdentityHashMap<K,V> 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 ( ); } |