首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中节省内存的稀疏数组

Java中节省内存的稀疏数组
EN

Stack Overflow用户
提问于 2012-09-28 00:39:02
回答 5查看 14.2K关注 0票数 10

(有一些关于时间高效的稀疏数组的问题,但我正在寻找内存效率。)

我需要List<T>Map<Integer,T>的等价物

只需设置一个比以前遇到的任何密钥都大的密钥,

  1. 就可以按需增长。(可以假设在大多数索引不是null的情况下,即当实际数据不是非常稀疏的情况下,键值与ArrayList<T>的存储器效率一样高。
  2. 当索引稀疏时,使用与非indices.
  3. Uses的数量成比例的内存比使用更少的内存(因为这会自动装箱关键字,并且可能不利用标量关键字类型)。
  4. 可以获取或设置分期日志(N)时间中的元素,其中N是条目的数量:不需要是线性时间,在非病毒式开源纯HashMap<Integer,T>库(最好是在
  5. 中)中,对分搜索将是完全相同的。

有没有人知道这样一个实用类?

我曾期望Commons Collections会有一个,但它似乎没有。

我遇到了org.apache.commons.math.util.OpenIntToFieldHashMap,它看起来几乎是正确的,除了值类型是一个FieldElement,这似乎是多余的;我只想要T extends Object。它看起来很容易编辑它的源代码,使其更通用,尽管我宁愿使用二进制依赖关系,如果可以的话。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-28 00:49:08

我会尝试使用trove集合,有TIntObjectMap可以满足你的意图。

票数 6
EN

Stack Overflow用户

发布于 2013-04-22 11:50:34

我会从安卓的SparseArray实现中寻找灵感。您可以在此处http://source.android.com/source/downloading.html下载AOSP的源代码来查看源代码

票数 5
EN

Stack Overflow用户

发布于 2012-09-28 01:08:53

我已经将我的测试用例保存为jglick/inthashmap。结果:

代码语言:javascript
复制
HashMap size: 1017504
TIntObjectMap size: 853216
IntHashMap size: 846984
OpenIntObjectHashMap size: 760472
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12626135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档