小范围整数的高效映射

时间:2013-05-06 03:52:38

标签: java performance map hashmap

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

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

限制:我正在尝试避免使用数组,因为这些地图中的许多只有少数几个可能的键。我也试图避免第三方库。大型图书馆肯定是出局的,虽然小型图书馆,或者只有1或2个班级可能没问题。

有没有人知道这种情况的快速地图?

2 个答案:

答案 0 :(得分:4)

如果您的密钥<= 100,则数组应该相当有效;数组的大小将是400字节。我不知道地图结构的条目不会合理地接近这个大小。

如果您的地图(作为数组)总计4MB或40MB或其他什么,这是否重要?您可以将JVM堆设置得很大。

备选方案2):

  • 编写自己的基于Hash的地图类(不实现collections.Map)。在单元格数组中使用“线性探针”相对简单 - 另一种技术是链接列表,它(再次)将与“直接数组”选项一样大。

答案 1 :(得分:3)

GNU Trove has primitive maps会做你想做的事。但是,如果你不是试图剔除每一个字节的内存,我会提出第二个托马斯建议只使用一个数组。