0

現在ハッシュマップを使用しているメモリに大量のデータを格納するプログラムがあります。コンテンツを別のコンテナにコピーせずにコンテナのサイズを変更できるコンテナまたはコレクションがJavaにあるかどうか興味があります。たとえば、ハッシュマップがあり、そのサイズが 1000 エントリだとします。そして、ハッシュマップからデータを削除し始めます。Hashmap のサイズは、1000 個のエントリが含まれていなくても 1000 のままです。内容をコピーせずに使用されているメモリの割り当てを解除できるコンテナはありますか。コンテンツをコピーしたくない理由は、保存されているデータが非常に大きいため、コンテンツを新しいコンテナーにコピーしようとすると、システムのメモリが不足する可能性があるためです。

4

1 に答える 1

1

Java HashMap の仕組みを見てみましょう: http://opreview.blogspot.com/2013/03/how-does-hashmap-work-in-java-hashmap.html オブジェクトが削除されるとサイズが変更されますが、その容量 (バケット配列のサイズ) は同じサイズのままです メソッド ArrayList.trimToSize() を呼び出すことができる HashMap と ArrayList の使用を再検討する必要があります

于 2013-10-09T20:59:43.673 に答える