最佳数据结构在java中搜索两个时空事件之间的所有重叠



我在两个不同的空间和时间范围内定义了两个不同的事件。它们在空间中由千米初始化和千米最终化定义。在时间由InstantDateInitial和InstantDateFinal。

我想找到最有效的解决方案来找到保存在数据结构中的事件与事件之间的所有重叠。

我正在搜索像DataStructureEvents这样的东西。重叠(事件)

我尝试使用Treeset数据结构,我使用耳机在事件结束后开始的空间维度上切割事件。之后,我向后滚动以查找另一个事件端点,直到到达使用业务规则定义的阈值。

但我希望有更有效的方法来做到这一点!

有专门的时态数据结构和数据库可以做到这一点。然而,我认为它们中很少有免费的开源实现。要搜索的关键字是&"时空索引"&

作为一种选择,我认为你可以简单地使用任何空间索引,将你的数据编码成二维"矩形",第一个维度是距离,第二个是时间。然后,您可以使用窗口查询来查找任何"矩形"。(=event)与您的任何给定事件重叠

如果你正在寻找Java中的空间数据结构,有例如Tinspin索引库(免责声明:我是维护者)。我建议尝试r树,四叉树(qtplain或qthypercube)或ph树。

如果你有很多的数据,空间索引不够快,你可能想看看空间连接索引和查询。

最新更新