2016-10-25 3 views
0

わかってのとおり、はHashtableには使用できません。 しかし、私はHashtable(jdk 1.8)のソースコードをチェックしました。 私は値のチェックを見ただけで、キーチェックを見つけることができませんでした。ここで がput法の下のソースコードです:ハッシュテーブルでキーがヌルかどうかを確認する方法

public synchronized V put(K key, V value) { 
    // Make sure the value is not null 
    if (value == null) { 
     throw new NullPointerException(); 
    } 

    // Makes sure the key is not already in the hashtable. 
    Entry<?,?> tab[] = table; 
    int hash = key.hashCode(); 
    int index = (hash & 0x7FFFFFFF) % tab.length; 
    @SuppressWarnings("unchecked") 
    Entry<K,V> entry = (Entry<K,V>)tab[index]; 
    for(; entry != null ; entry = entry.next) { 
     if ((entry.hash == hash) && entry.key.equals(key)) { 
      V old = entry.value; 
      entry.value = value; 
      return old; 
     } 
    } 

    addEntry(hash, key, value, index); 
    return null; 
} 

答えて

5

キーのチェックはここにある:

int hash = key.hashCode(); 

キーがnullの場合、これはNullPointerExceptionがスローされます。

関連する問題