0

私のゲームはリージョンのグリッドに分割されています。各リージョンには、オブジェクトのリストが含まれています。各オブジェクトは複数のリージョンに存在できます(最大tp 4)。

オブジェクトが移動するとき、それがどの領域にあるかを確認し、それらが変更された場合は、それらがあった領域からそれらを削除して、新しい領域に追加します。オブジェクトの順序は重要ではありません。迅速な挿入と取り外しが必要です。ランダムな要素へのアクセスは必要ありません。

このための理想的なデータ構造は何でしょうか?

4

2 に答える 2

1

各エンティティで:

HashSet<Region> regions;

各地域で:

HashSet<Entity> entities;

リージョンとエンティティはhashCodeを定義する必要があり、最高のパフォーマンスを得るには適切に等しくなります。

エンティティがリージョンを変更する場合は、エンティティからリージョンを削除する前に古いリージョンから削除し、エンティティに新しいリージョンを追加した後、新しいリージョンに追加します。

どちらかのセットを繰り返すのは簡単です。反復順序は保証されていませんが、それは問題ではないとおっしゃいました。またHashSet、適切に定義されたhashCodeと等しいと仮定すると、挿入/削除は一定時間です。

for(Entity entity: entities) {
    // do something
}
于 2012-11-11T21:47:32.920 に答える
0

各地域に対応するリストへの4つのポインターの単純な配列は私には問題ないようです。

于 2012-11-11T20:28:45.687 に答える