-1

キーとして「Document」、値として「DocumentSections」を持つ hashMap を作成しました。Map <Document, DocumentSection>. ドキュメントには他にも多くのメンバー変数 (プリミティブおよび非プリミティブ) があります。ドキュメントには一意の文字列値もあります。私の質問は、 Document からの一意の文字列値を介して Document をキーとして置き換える方がよいかどうかですHashMap<document.getValue(), DocumentSection>。value は一意の文字列です。文字列をキーとして使用し、Document オブジェクトをキーとして使用しない場合、プログラムのメモリ消費量は少なくなりますか?

ありがとう

4

3 に答える 3

1

私のプログラムはより少ないメモリを消費しますか

いいえ、マップはドキュメントへの参照のみを保存します。Document または String への参照は、同じ量のメモリを使用します。

ただし、変更可能なオブジェクトをキーとして使用することは、一般的に悪い考えであることに注意してください。したがって、ドキュメントが変更される可能性がある場合は、ハッシュコード/等号の観点から、代わりにその文字列を使用する必要があります。

于 2013-05-12T12:37:36.560 に答える
1

まず、ドキュメントは変更可能なオブジェクトであるため、キーとしての選択は間違っています。

2 番目のポイントは、キーを文字列に置き換えてもメモリを節約できないということです。ドキュメント オブジェクトは、キーとして使用しなくてもメモリ内に残ります。

于 2013-05-12T12:37:47.413 に答える
0

実際、ドキュメントの代わりに文字列をキーとして使用すると、ハッシュ関数の時間が短縮される場合があります。

于 2013-05-12T13:45:38.580 に答える