-5

実際のオブジェクト自体を使用するのではなく、ハッシュテーブル内の特定のオブジェクトを表す文字列とラッパーを使用する方が好まれるのはなぜですか?

4

1 に答える 1

4

質問は少しあいまいですが、おそらくこれが役立ちます:

  • キーは不変でなければなりません。String (Integer, Long) はこれにうまく適合します。(もちろん、後でオブジェクトを変更してキーと一致しなくなった場合、これは役に立ちません)。

  • キーは hashCode/equals コントラクトを実装する必要があります。String (Integer, Long) はすでにこれを行っています。

  • カスタム オブジェクトのインスタンスを作成しなくても、キーで検索できます。

そのため、カスタム オブジェクトのプロパティまたは計算値にキーを設定する場合は、「プリミティブ」組み込みクラスを使用してその派生値を表すのが便利 (かつ安全) です。

実際、ハッシュテーブルのキーにカスタム クラスを使用する必要があったり、推奨されたりすることはめったにありません。ほぼすべてを String、Integer、および Long でカバーできます (よくある例外: タプル。Java には適切な組み込みクラスがなく、配列にはありません)。 t はハッシュ キーとして機能します)。

于 2012-07-29T00:13:26.060 に答える