私は65,536と65,536を測定し、同じ座標を共有することができない多くのオブジェクトによって数えられる座標空間の数を持っています。これを考えると、ハッシュを作るintに座標を作る2つのshortを組み合わせることによって、各オブジェクトの固有のハッシュを保証することができます。この場合、どのようなHashMapのようなコレクションを使用しますか?
これらのオブジェクトへの参照を格納するために、私は現在、カスタム不変PointクラスをキーとしてHashMapを使用しています。しかし、私はこれらの座標空間全体を一度に利用し始めているので、メモリ使用量を減らす方法を見始めました。
JavaのHashMapのは、どのように動作するかの私の理解では基本的なものですが、私は多くのメモリ効率的なバージョンを使用している可能性のように、私は、各オブジェクトに一意のハッシュを保証できることを考えると、それが思われる:
- doesnの」複数のオブジェクトを含めることができますトンの使用バケット
- 入れて、ハッシュを使用しての代わりに、キー
は、HashMapのようなコレクションが存在するか使用してオブジェクトを取得することはできますか?
編集:座標空間はスパースで、約2000-3000個のオブジェクトで実行されます。
... – Rich
まあ非常に少なくとも私が欲しい/必要65,536余分いけないので、私は、単一のアレイを使用します配列オブジェクトです(2次元配列は実際には配列の配列です)...しかし、それでもmemeoryには余分なスペースが確保されますが、座標空間ごとに2000〜3000個のオブジェクトしかなく、配列は4,294,967,296の参照のためにメモリを予約します – Numeron
@Numeron - この[スパース行列に関する説明](http://stackoverflow.com/questions/390181/sparse-matrices-arrays-in-java)を参照してください。メモリの効率は重要なので、それはあなたのプロジェクトに行く方法かもしれません。 – Perception