我想在Java中构建一个数据结构,我将插入大约200,000个键的字符串,每个字符串的平均值为1000个整数Map<String, Arraylist<Integer>>
。地图最终将有大约2亿个值。地图<对象,集合<Object>>有什么问题?
问题是,在插入时,我必须首先检查密钥是否存在于地图中,如果为true,则获取存储在临时集合中的所有值,然后将新整数添加到集合并将它们放回地图,或者用一个新的整数实例化一个新的集合。
当我到达一个集合包含大约50000个整数的点时,这非常缓慢。我通常从堆空间错误中得到一个Java。
有没有办法摆脱获得过程?在那里我只检查关键存在,然后立即将值添加到已存在的集合中,像posh到堆栈,特别是映射位于内存中,还是它在Java和C++之间产生了区别,在C++中我可以从使用指针中受益?
保持这样一个事实,即我不喜欢使用像multimaps这样的东西来增加地图的大小,因为结构看起来几乎是直截了当的。
非常感谢提前。
'Multimap'实现不会消耗比'Map>更多的内存“。 –
2013-04-05 15:23:40
你为什么不给我们展示一些代码? – NPE 2013-04-05 15:23:47
如果在地图中找不到密钥,您实际上只需要进行放置。添加相关的SSCCE。 – Perception 2013-04-05 15:25:46