Java - 如何检查整个数组的交集

时间:2017-09-30 11:11:18

标签: java arrays swing

我不确定如何真正提出这个问题所以我刚刚开了个新帖。我试图看看我是否可以立即检查我的球是否与阵列中的任何矩形相交。

if(ball.getBounds2D().intersects(bricksEasy)) <-- bricks easy is a 2D array of rectangles

现在我正在避免迭代整个数组以避免延迟。我可以用的任何解决方案?欣赏它。

1 个答案:

答案 0 :(得分:1)

  

现在我正避免只是遍历整个数组来避免   延迟。我可以使用任何解决方案吗?

如果在检测到碰撞后立即停止迭代,则不会造成任何延迟。

如果您操作Rectangle2D实例,则可以使用此重载实例方法:

public boolean intersects(Rectangle2D r)

要在匹配完成后立即退出迭代,您可以使用anyMatch()谓词:

Rectangle2D ball2D = ...;
Rectangle2D[] bricksEasy = ...;
boolean isAnyIntersection = Arrays.stream(bricksEasy).anyMatch(brick -> brick.intersects(ball2D));

您也可以使用带有ball2D变量的方法参考作为目标:

Rectangle2D ball2D = ...;
Rectangle2D[] bricksEasy = ...;
boolean isAnyIntersection = Arrays.stream(bricksEasy).anyMatch(ball2D::intersects);