在Java中,如果一个点位于一组平面内,存储和测试该点的最佳方法是什么?

在Java中,如果一个点位于一组平面内,存储和测试该点的最佳方法是什么?,java,performance,bukkit,Java,Performance,Bukkit,我做了很多研究,试图找到最好的方法,但没有一个好的简单的解决方案 在2D平面上,我有[x1=10,y1=10,x2=30,y2=20],[x1=50,y1=60,x2=80,y2=100]等值,这些值组成了许多不同的矩形,可以是大量的矩形。我需要测试一个给定的点[x=15,y=15]是否位于其中一个矩形内,并得到它位于哪个矩形内。我还需要能够添加和删除列表中的单个矩形。存储大量矩形并循环遍历以查看给定点是否位于其中一个矩形内的最佳且资源消耗最少的方法是什么 我曾尝试创建一个对象,为每个矩形保留两

我做了很多研究,试图找到最好的方法,但没有一个好的简单的解决方案

在2D平面上,我有[x1=10,y1=10,x2=30,y2=20],[x1=50,y1=60,x2=80,y2=100]等值,这些值组成了许多不同的矩形,可以是大量的矩形。我需要测试一个给定的点[x=15,y=15]是否位于其中一个矩形内,并得到它位于哪个矩形内。我还需要能够添加和删除列表中的单个矩形。存储大量矩形并循环遍历以查看给定点是否位于其中一个矩形内的最佳且资源消耗最少的方法是什么

我曾尝试创建一个对象,为每个矩形保留两个点,并将它们全部存储在一个映射中,尽管当每秒在映射中的对象中循环数次时,java似乎无法跟上


有人知道更好的方法吗?

首先,如果要检查点是否位于矩形内,位置是否为矩形类中的点,以及宽度、高度:

public boolean contains(Point point)
{

    return (point.getX() >= position.getX() && point.getX() <= position.getX() + width) 
            && 
            (point.getY() >= position.getY() && point.getY() <= position.getY() + height);
}
在检查点是否位于矩形内部时,可以将矩形存储在四叉树中:

搜索四叉树,在你想要测试的点上,四叉树只会返回接近该点的矩形,所以你做的比较要少得多