長方形 (x、y、幅、高さ) またはポイント (x、y) のリストに変換できる部屋と通路のセットがあります。Room
どちらもインターフェースをPassage
拡張しPointable
ます。getPoints() メソッドは、Room クラスに対して次のように実装されます。
public Set<Point> getPoints() {
Set<Point> array = new HashSet<Point>();
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
array.add(new Point(x + i, y + j));
}
}
return array;
}
問題:特定のが属する を
特定する必要があります。交差する部屋はありません。私はもともと a を使用して、それぞれを aに関連付けました。これにより、O(n) 時間ですばやく答えにアクセスできました。ただし、レベルの生成では複数回再計算する必要があります。この時点で、(生成とアクセスを考慮して) HashMap を使用する方が効率的ですか? それとも、2 次元間隔ツリーのセットなど、別の方法を使用する必要がありますか?Pointable
Point
HashMap<Point,Pointable>
Point
Pointable
HashMap