0

CollectionJavaオブジェクトについていくつか質問があります...

  1. HashSetやのようなコレクションにオブジェクトを追加すると、HashMapオブジェクトはどのように内部的に保存されますか?
  2. 値をHashtable許可しないのはなぜですか?null
4

2 に答える 2

6

コレクションにオブジェクトを追加していません。参照を追加しています。

キーと値HashTableが許可されない理由については、設計上の決定にすぎません。nullnull キーを許可しないと便利な場合もあれば、煩わしい場合もあります。たとえば、null キーと値の両方を許可しますHashMap null を禁止する理由はさまざまです。

  • 通常、null キーまたはnull 値は、呼び出し元のコードにプログラミング エラーがあることを示します。挿入の時点でこれを拒否すると、コードが値をフェッチして予期しない null になるまで待つよりも、はるかに簡単にエラーを見つけることができます。

  • マップ内の値を null にすることはできないことがわかっている場合は、包含を個別にチェックしてからフェッチする必要はありません。フェッチでき、結果が null の場合は、キーが欠落していることがわかります。

  • マップの実装で null キーを処理するには、もう少し作業が必要です。null 値が役立つ場合もありますが、null キーはほとんど役に立ちません

于 2012-06-28T16:44:25.250 に答える
0

Hashtable は、追加されたオブジェクトの equals および hashcode メソッドを使用するため、null 値を許可しません。

http://en.wikipedia.org/wiki/Hash_function

于 2012-06-28T16:44:00.287 に答える