我有一组房间和通道,我可以将它们转换为矩形(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;
}
问题:
我必须确定Pointable
一个给定的Point
所属。没有房间相交。我最初使用 aHashMap<Point,Pointable>
将每个Point
与 a相关联Pointable
,它能够在 O(n) 时间内快速访问答案。但是,现在需要HashMap
在生成关卡时重新计算多次。
此时,使用 HashMap(考虑到生成和访问)是否仍然更有效,还是应该使用另一种方法,例如一组 2-D 区间树?