Get:
现在我们来看下get方法的实现:
/**
* Returns the value to which the specified key is mapped, or {@code null}
* if this map contains no mapping for the key.
*
*
* More formally, if this map contains a mapping from a key {@code k} to a
* value {@code v} such that {@code (key==null ? k==null :
* key.equals(k))}, then this method returns {@code v}; otherwise it returns
* {@code null}. (There can be at most one such mapping.)
*
*
* A return value of {@code null} does not necessarily indicate that
* the map contains no mapping for the key; it's also possible that the map http://www.heyzc.com/pro/45.html
* explicitly maps the key to {@code null}. The {@link #containsKey
* containsKey} operation may be used to distinguish these two cases.
*
* @see #put(Object, Object)
*/
publicV get(Object key) {
if(key ==null)
returngetForNullKey();
inthash = hash(key.hashCode());
for(Entry e = table[indexFor(hash, table.length)]; e !=null; e = e.next) {
Object k;
if(e.hash == hash && ((k = e.key) == key || key.equals(k)))
returne.value;
}
returnnull;
}