java:生成一个不在矩形内的随机点

trs*_*trs 1 java point awt

我有很多矩形,我试图生成一个不在任何一个内部的随机点.我创建了一个方法来执行此操作,但似乎这导致我的应用程序冻结,因为它必须在生成有效点之前经过大量的点:

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)

有什么我做错了,或者有更有效的方法来做它,以便它不会冻结我的应用程序?

xpa*_*pad 8

如果您在第一次尝试时没有成功,则此代码将导致无限循环,okPoint = true必须位于do块内.了解修复时的性能.当你检查多个矩形而不仅仅是一个矩形时,我想不出更快的方法.