1

所以我有一个程序使用许多 HashMaps 来存储少量整数键,介于 0 和 50 之间,其键表示小于 100 的唯一序数。

这些地图经常被访问,我已经完成了分析以确定它将有助于拥有更有效的数据结构。理想情况下,我会使用类似于 EnumMap 的东西,因为这些整数很小且唯一。

限制:我试图避免使用数组,因为这些映射中的许多只有少数可能的键。我也试图避免使用 3rd 方库。大型库肯定已经淘汰了,尽管小型库或只有 1 或 2 个类可能没问题。

有谁知道适合这种情况的快速地图?

4

2 回答 2

4

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

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

备选方案 2):

  • 编写您自己的基于哈希的地图类(不实现 collections.Map)。在单元格数组中使用“线性探针”相对简单——另一种技术是链表,它(再次)将与“直接数组”选项一样大。
于 2013-05-06T03:57:09.187 回答
3

GNU Trove 有原始的地图,可以做你想做的事。但是,如果您不想勉强使用每个字节的内存,我会支持 Thomas 的建议,即只使用一个数组。

于 2013-05-06T04:09:31.637 回答