2012-06-25 5 views

답변

6

해시 맵 그냥 엔트리

HashMap 들어
409  private V putForNullKey(V value) { 
410   for (Entry<K,V> e = table[0]; e != null; e = e.next) { 
411    if (e.key == null) { 
412     V oldValue = e.value; 
413     e.value = value; 
414     e.recordAccess(this); 
415     return oldValue; 
416    } 
417   } 
418   modCount++; 
419   addEntry(0, null, value, 0); 
420   return null; 
421  } 
2

를 보유하는 데 사용하는 배열에서 첫 번째 버킷에 널 레퍼런스를두고, 단지 특별한 경우이다. 아래의 소스 코드는 JDK 1.6에서 가져온 것입니다 :

public V put(K key, V value) { 
    if (key == null) 
     return putForNullKey(value); 
    int hash = hash(key.hashCode()); 
    ... 

} 

/** 
* Offloaded version of put for null keys 
*/ 
private V putForNullKey(V value) { 
    for (Entry<K,V> e = table[0]; e != null; e = e.next) { 
     if (e.key == null) { 
      V oldValue = e.value; 
      e.value = value; 
      e.recordAccess(this); 
      return oldValue; 
     } 
    } 
    modCount++; 
    addEntry(0, null, value, 0); 
    return null; 
}