-4

任意のオブジェクトをエンキューするrandomQueueと呼ばれるデータ型を作成し、それからランダムにデキューします。基本的なデータ型として配列を使用しているので、質問は、より多くのメモリハッシュセットまたは配列を使用することです。ランダムアイテムジェネレータAPIは次のようになります

enqueue(Item item)
dequeue()
isEmpty()
size()
private resize()
private shrink()

実行時間は償却する必要があります。両方のパフォーマンスは両方の実装で同じである必要があると思いますが、メモリについてはどうでしょうか。コードのメモリ使用量の各行を計算する代わりに、プログラムで使用されるメモリを計算する方法はありますか?PS私はJavaを使用しています。

4

2 に答える 2

1

32ビットのHotSpotVMを想定すると、java.util.HashSet要素ごとに約32バイト、配列には約4バイトかかります。もちろん、これらの構造の1つを再実装する場合、これらの数値は役に立ちません。

于 2013-02-20T22:38:43.137 に答える
0

2つの異なる構造は、メモリ消費に関して互いに大きな利点をもたらすことはありません。配列では、探しているアイテムが見つかり、ハッシュセットがグループ化されるまですべてのアイテムを反復処理する必要があるため、ハッシュセットは通常、配列を介した取得の方が高速です。

于 2013-02-20T22:14:41.830 に答える