【发布时间】:2013-04-29 19:05:12
【问题描述】:
所以我有一个程序使用许多 HashMaps,这些 HashMaps 存储少量整数键,介于 0 和 50 之间,其键表示小于 100 的唯一序数。
这些地图经常被访问,我已经完成了分析以确定它有助于拥有更高效的数据结构。理想情况下,我会使用类似于 EnumMap 的东西,因为这些整数很小且唯一。
限制:我试图避免使用数组,因为这些映射中的许多只有少数可能的键。我也试图避免使用 3rd 方库。大型库肯定不存在,但小型库或只有 1 或 2 个类可能没问题。
有没有人知道适合这种情况的快速地图?
【问题讨论】:
-
我看不到任何比 50 元素数组更快的东西。
-
时间和空间几乎是总是的权衡。 50 个元素的数组非常小。克服它。除非您更改整个方法,否则您不会比单操作码数组索引更快。
-
对于它的价值,一个 EnumMap 内部只有一个数组,其大小是枚举中元素的数量。
-
当然,但是您似乎不喜欢 50 元素数组的想法。您暗示您想要与 EnumMap 一样好的东西,但需要整数而不是枚举;我只是指出这是一种错误的二分法,因为包含 50 个元素的枚举的 EnumMap 只是一个 50 个元素的数组。
-
说“我想要一些比 50 元素数组更快但更节省空间的东西,类似于 EnumMap 给我的东西”基本上是在说“我想要一些不同于 50 元素数组的东西,类似于 50 个元素的数组。”这就是我要说的。 :) 我认为说“但大多数 EnumMap 的域较小,因此它们占用的空间更少”是不公平的,因为正是(通常)较小的域允许它们(通常)占用更少的空间,而这并不t 适用于您的情况。这并不是说 EnumMap 在解决时间与空间之间的权衡问题。
标签: java performance map hashmap