相关疑难解决方法(0)

存储用于通过x,y坐标定位的对象

我正在尝试确定一种存储一组对象的快速方法,每个对象都有一个x和y坐标值,这样我就可以快速检索某个矩形或圆形内的所有对象.对于小型对象集(~100),简单地将它们存储在列表中并通过它迭代的简单方法相对较快.然而,对于更大的群体来说,预计会很慢.我已经尝试将它们存储在一对TreeMaps中,一个在x坐标上排序,一个在y坐标上排序,使用以下代码:

xSubset = objectsByX.subSet( minX, maxX );
ySubset = objectsByY.subSet( minY, maxY );
result.addAll( xSubset );
result.retainAll( ySubset );
Run Code Online (Sandbox Code Playgroud)

这也有效,并且对于较大的对象集更快,但仍然比我想要的慢.部分问题还在于这些对象四处移动,需要插回到此存储中,这意味着将它们从树中删除并重新添加到树/列表中.我不禁想到那里必须有更好的解决方案.我在Java中实现这个,如果它有任何区别,虽然我希望任何解决方案都会以有用的模式/算法的形式出现.

java tree spatial quadtree

16
推荐指数
2
解决办法
6463
查看次数

标签 统计

java ×1

quadtree ×1

spatial ×1

tree ×1