Collection
Javaオブジェクトについていくつか質問があります...
HashSet
やのようなコレクションにオブジェクトを追加すると、HashMap
オブジェクトはどのように内部的に保存されますか?- 値を
Hashtable
許可しないのはなぜですか?null
Collection
Javaオブジェクトについていくつか質問があります...
HashSet
やのようなコレクションにオブジェクトを追加すると、HashMap
オブジェクトはどのように内部的に保存されますか?Hashtable
許可しないのはなぜですか?null
コレクションにオブジェクトを追加していません。参照を追加しています。
キーと値HashTable
が許可されない理由については、設計上の決定にすぎません。null
null キーを許可しないと便利な場合もあれば、煩わしい場合もあります。たとえば、null キーと値の両方を許可しますHashMap
。null を禁止する理由はさまざまです。
通常、null キーまたはnull 値は、呼び出し元のコードにプログラミング エラーがあることを示します。挿入の時点でこれを拒否すると、コードが値をフェッチして予期しない null になるまで待つよりも、はるかに簡単にエラーを見つけることができます。
マップ内の値を null にすることはできないことがわかっている場合は、包含を個別にチェックしてからフェッチする必要はありません。フェッチでき、結果が null の場合は、キーが欠落していることがわかります。
マップの実装で null キーを処理するには、もう少し作業が必要です。null 値が役立つ場合もありますが、null キーはほとんど役に立ちません。
Hashtable は、追加されたオブジェクトの equals および hashcode メソッドを使用するため、null 値を許可しません。