如何以及何时检查哈希表中的键是否为空

时间:2016-10-25 01:52:10

标签: java null hashtable

众所周知,null中不允许使用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;
}

1 个答案:

答案 0 :(得分:5)

关键检查在这里:

int hash = key.hashCode();

如果密钥为空,这将抛出NullPointerException