JavaDocのConcurrentHashMap
こう言っています。
似ている
Hashtable
ようで違うHashMap
、このクラスはないnull
キーまたは値として使用できるようにします。
私の質問は「なぜ?」です。
2 番目の質問: null を許可しないのはなぜですかHashtable
?
私はデータの保存に HashMap を多用してきました。しかし、変更するとConcurrentHashMap
NullPointerExceptions が原因で何度か問題が発生しました。
ベストアンサー1
著者ConcurrentHashMap
自身(ダグ・リー)より:
ConcurrentMaps (ConcurrentHashMaps、ConcurrentSkipListMaps) で null が許可されない主な理由は、非並行マップではかろうじて許容される曖昧さに対応できないためです。主な理由は、
map.get(key)
が を返す場合null
、キーが に明示的にマップされているかnull
、キーがマップされていないかを検出できないことです。非並行マップでは、 を介してこれを確認できますmap.contains(key)
が、並行マップでは、マップは呼び出し間で変更されている可能性があります。