ConcurrentHashMap が null キーと値を防ぐのはなぜですか? 質問する

ConcurrentHashMap が null キーと値を防ぐのはなぜですか? 質問する

JavaDocのConcurrentHashMapこう言っています。

似ているHashtableようで違うHashMap、このクラスはないnullキーまたは値として使用できるようにします。

私の質問は「なぜ?」です。

2 番目の質問: null を許可しないのはなぜですかHashtable?

私はデータの保存に HashMap を多用してきました。しかし、変更するとConcurrentHashMapNullPointerExceptions が原因で何度か問題が発生しました。

ベストアンサー1

著者ConcurrentHashMap自身(ダグ・リー)より:

ConcurrentMaps (ConcurrentHashMaps、ConcurrentSkipListMaps) で null が許可されない主な理由は、非並行マップではかろうじて許容される曖昧さに対応できないためです。主な理由は、map.get(key)が を返す場合null、キーが に明示的にマップされているかnull、キーがマップされていないかを検出できないことです。非並行マップでは、 を介してこれを確認できますmap.contains(key)が、並行マップでは、マップは呼び出し間で変更されている可能性があります。

おすすめ記事