所以我有一个程序使用许多 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/