我想我正在寻找一个稀疏数组实现,但我真的需要这在内存使用方面是有效的,并且我的数据的一个特性是实现可以利用的是索引被填充,使得如果存在索引i
的值,则索引i-1
和i+1
也可能存在值,如果i
的值没有值,则类似,i-1
和i+1
可能没有值。
我正在使用Java,我需要索引类型为long
而不是更常见的int
,如果这有所不同的话。我有大约5000万个需要存储的对象。我已经研究过Trove4J的TLongObjectHashMap
,不幸的是,仅哈希表需要大约1.6GB,我真的需要对此进行改进。
有人能指出我可以针对长期顺序分配的标识符进行优化吗? insert / get的对数性能对我来说是可以接受的,所以也许是基于树的东西?
答案 0 :(得分:0)
也许您可以使用数据库而不是数组?内存中嵌入式数据库,如h2sql!
答案 1 :(得分:0)
Btree的内存开销很小,所以我会试试。