我有很多矩形,我试图生成一个不在任何一个内部的随机点.我创建了一个方法来执行此操作,但似乎这导致我的应用程序冻结,因为它必须在生成有效点之前经过大量的点:
public Point getLegalPoint() {
Random generator = new Random();
Point point;
boolean okPoint = true;
do {
point = new Point(generator.nextInt(975), generator.nextInt(650));
for (int i = 0; i < buildingViews.size(); i++) {
if (buildingViews.get(i).getBuilding().getRectangle()
.contains(point)) {
okPoint = false;
break;
}
}
} while (okPoint == false);
return point;
}
Run Code Online (Sandbox Code Playgroud)
有什么我做错了,或者有更有效的方法来做它,以便它不会冻结我的应用程序?
如果您在第一次尝试时没有成功,则此代码将导致无限循环,okPoint = true必须位于do块内.了解修复时的性能.当你检查多个矩形而不仅仅是一个矩形时,我想不出更快的方法.