java - 如何用LinkedHashMap获取子图?

标签 java performance dictionary iteration

目前,我使用 TreeMap 来存储一些 x 和 y 坐标,但与 ArrayListHashMap 相比,迭代速度非常慢。我使用它是因为我需要 subMap() 方法,这样即使确切的 X 值(键)不存在,我也可以获得确定范围内的 X 值。

LinkedHashMap 的速度与 HashMap 几乎相同,我可以按插入顺序迭代键(我需要插入顺序或按比较器排序,就像在 TreeMap 中完成的那样),但我没有 submap() 方法。在 TreeMap 中我可以非常快速地生成子图。

是否有任何数据结构或某种方法可以比 TreeMap 更快地存储有序值(通过插入顺序或比较器),即使确切的值不在 map 中,也可以获取一定范围内的子 map ?我的意思是,也许我想要 2 到 25 之间的值,但 2 不存在,最接近的是 3,因此它将返回 3 到 25 之间的子图。或者有什么方法将此功能添加到 LinkedHashMap 中?

最佳答案

听起来你需要一个 TreeMap,它的迭代速度并不比 LinkedHashMap 慢多少,并且可以做你真正想要的事情。由于 HashMap 是无序的,因此 subMap 没有任何意义。

关于java - 如何用LinkedHashMap获取子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27674669/

相关文章:

java - 如何在 Android 上使用 ServiceWorkerController

python - 如何听写文件夹?

python - 尝试在 Python : delete item in map and "vector.erase(vector.end())" 中重写 C++ 代码时出现问题

Java 线程处理

java - Swing 中的重叠组件

android - 安卓应用的性能

mysql - 新 Windows 2012 R2 Server 上 MySQL 性能缓慢

python - 如何从python中的numpy.searchsorted的结果提高数组屏蔽的性能?

python - 定义 Python 字典时,如何使用给定字段的值来计算其他字段?

java - 等价于 Java