java - 小范围整数的高效映射

标签 java performance dictionary hashmap

所以我有一个程序使用许多 HashMap,这些 HashMap 存储少量的整数键,介于 0 和 50 之间,它们的键代表一个小于 100 的唯一序数。

这些 map 经常被访问,我已经进行了分析以确定它有助于拥有更高效的数据结构。理想情况下,我会使用类似于 EnumMap 的东西,因为这些整数很小且独一无二。

限制:我试图避免使用数组,因为这些 map 中的许多 map 只有少数几个可能的键。我也试图避免使用第 3 方库。大型图书馆肯定已经过时了,尽管小型图书馆或只有 1 或 2 个类(class)可能没问题。

有人知道适合这种情况的快速 map 吗?

最佳答案

鉴于您的键 <= 100,数组应该相当有效;数组的大小为 400 字节。我不知道 Map 结构的条目不会合理地接近这个大小。

如果您的 map (作为数组)总大小为 4MB、40MB 或其他,这有关系吗?您可以将 JVM 堆设置得较大。

备选方案 2):

  • 编写您自己的基于哈希的 map 类(不实现 collections.Map)。在单元阵列中使用“线性探针”相对简单——另一种技术是链表,它(同样)将与“直接阵列”选项一样大。

关于java - 小范围整数的高效映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16391746/

相关文章:

java - 以奇数序列打印奇数

java - 无法写入文件 - JAVA Servlet

javascript - 具有多行的动态 Javascript 对象

Java - Map 打印我们插入的值

java - 如何从java中的线程传播异常?

java - 如何以编程方式查找传入 http 请求的地理位置?

Python 如何摆脱 PyDictionary 错误消息

c# - 如何从 C# 中的其他类的函数访问字典?

http - 将图像请求路由到单独的子域

.net - HashSet<T>.Contains 如何比 List<T>.Contains 快?