我正在尝试确定一种存储一组对象的快速方法,每个对象都有一个 x 和 y 坐标值,以便我可以快速检索某个矩形或圆形内的所有对象。对于小型对象集(约 100 个),简单地将它们存储在列表中并遍历它的简单方法相对较快。然而,对于更大的群体来说,这预计会很慢。我也尝试将它们存储在一对 TreeMaps 中,一个按 x 坐标排序,一个按 y 坐标排序,使用以下代码:
xSubset = objectsByX.subSet( minX, maxX );
ySubset = objectsByY.subSet( minY, maxY );
result.addAll( xSubset );
result.retainAll( ySubset );
这也有效,并且对于较大的对象集更快,但仍然比我想要的慢。部分问题还在于这些对象四处移动,并且需要重新插入此存储中,这意味着将它们从树/列表中删除并重新添加到树/列表中。我不禁认为那里必须有更好的解决方案。我正在用 Java 实现它,如果它有什么不同的话,尽管我希望任何解决方案都将以有用的模式/算法的形式出现。