目前我與ConcurrentHashMap
工作,我很熟悉HashMap
,我希望類似的行爲HashMap
,但是當我插入一個null
鍵或值,ConcurrentHashMap
拋出一個NullPointerException
。的ConcurrentHashMap VS HashMap和NullPointerException異常
我看到他們的消息人士透露,ConcurrentHashMap
的片段:
...
public V put(K key, V value) {
return putVal(key, value, false);
}
...
final V putVal(K key, V value, boolean onlyIfAbsent) {
if (key == null || value == null) throw new NullPointerException();
....
而且HashMap
的片段:
...
public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}
...
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) {
Node<K,V>[] tab; Node<K,V> p; int n, i;
// It Doesn't check null key or value.
....
爲什麼他們如此不同,當他們與null
鍵或值工作?這對我沒有意義。
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html:'與Hashtable類似,但與HashMap不同,此類不允許將null用作關鍵字或價值。' – fukanchik