Java in a Nutshell, 5th Edition [Electronic resources]

نسخه متنی -صفحه : 1191/ 716
نمايش فراداده

IdentityHashMap<K,V>java.util

Java 1.4cloneable 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 ( ); }