【发布时间】:2011-09-28 02:18:39
【问题描述】:
假设我要构建一个small简单的map,其中key是N个整数(固定,通常是1),value是M个整数(也是固定的,通常是1)。
现在我想将数据存储为一个整数数组,以提高空间效率。我在 JVM 中编程,但它不应该真正产生影响,除非算法需要将 指针 存储为整数。
有没有人定义了一个可以做到这一点的简单数据结构?
[编辑] 到目前为止,我的答案似乎表明没有人理解我的问题,所以我会尽力澄清。首先,忘记M和N;想象一下,我说的是一个 int 键和一个 int 值。 AFAIK,如果你想使用一个普通的 HashMap,其中键是整数,值是整数,那么你最终会得到至少 2 + 3 * N 个对象,其中 N 是条目数。
我想知道的是,您能否将所有这些整数打包在一个原始整数数组中,从而将对象数减少到两个,而与键的数量无关。一个用于 int[],另一个用于为您提供一些类似地图的接口的包装器对象。我的键和值都不会为空。而且我也不需要完整的标准 java.util.Map 实现。我只需要、获取、放置和删除,获取和返回 primitive ints 而不是 Integer 对象。访问确实不需要需要 O(1),就像在普通的 HashMap 中一样。
【问题讨论】:
-
您认为这将如何完成?此外,如果您加强空间要求,其他一些属性(如时间或大小)也需要放松。
-
如果我知道它是怎么回事,我就不会要求它了。但仅仅因为我不知道它是怎么回事并不意味着它是不可能的。我知道这些妥协。我说的是可能有数百万张小地图。
-
在这种情况下,我不明白你的问题描述。
-
我认为没有人这样做。修改后是否更清晰?
-
不多。显示一些代码来演示您现在所做的事情。
标签: java arrays data-structures map integer