我不确定如何真正地问这个问题,所以我刚刚做了一个新话题。我正在尝试查看是否可以立即检查我的球是否与数组中的任何矩形相交。

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


现在,我避免仅遍历整个数组以避免延迟。我可以使用任何解决方案吗?欣赏它。

最佳答案

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


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

如果您操作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);

关于java - Java-如何检查整个数组的交集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46502147/

10-11 10:56