java - Java 中数据的快速范围/间隔查找

标签 java arrays algorithm indexing

我有一个数据集,我需要从任意范围请求键值数据(例如时间序列数据)。我该怎么做才能让它尽快运行?

我正在考虑类似于 Python pandas 进行范围切片的方式。

示例:

数据是键值对:(0, value), (10, value), (20, value), (30, value), (41, value), (51, value), (60, value )...

查询:给我时间范围为 10 到 40 的数据点。

一种可能性是构建间隔树,遍历树以找到匹配的数组位置,然后使用 Arrays.copyOfRange。

最佳答案

在我的脑海中,你可以使用 NavigableMap (JDK中有两种实现),它有一个subMap类似切片的方法。

或者 ArrayList键值对(按键排序)。使用 Collection.binarySearch 查找范围的结尾然后 sublist得到你的切片。

关于java - Java 中数据的快速范围/间隔查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129928/

相关文章:

java - Hamcrest IsNot 匹配器与包装的自定义匹配器一起使用 - describeMismatch 无法按预期工作

java - 将数组列表值保存在函数中

计算多维数组第一维

arrays - 查找节点在数组中的位置(作为二进制堆)

c - 如何在 C 中完全重新分配二维数组?

algorithm - 太空入侵者碰撞检测。 1颗子弹检查所有入侵者?

java - 用 O(nlogn) 时间 O(1) 空间有效地计算数组中等值对的数量

java - 为什么 IntelliJ 在 maven-wrapper.properties 中将 distributionUrl 标记为未使用?

java - 使用 ProGuard 混淆后如何保留 jar 依赖关系

ruby - 深度哈希反转算法(应该是 ruby )