我正在尝试在 Java 中构建一个数据结构,我将在其中插入大约 200,000 个字符串键,每个“平均”为 1000 Integers Map<String, Arraylist<Integer>>
。该地图最终将具有大约 2 亿个值。
问题是在插入时,我必须首先检查映射中是否存在键,如果为真,则获取存储在临时集合中的所有值,然后将新整数添加到集合中并将它们放回映射,或者实例化一个带有新整数的新集合。
当我到达一个集合包含大约 50000 个整数的地步时,这太慢了。我通常会遇到 Java 堆空间不足的错误。
有没有办法摆脱获取过程?我只检查键是否存在,然后立即将值添加到现有集合中,例如将 posh 添加到堆栈中,尤其是映射在内存中,或者它是导致 Java 和 C++ 之间差异的原因,在 C++ 中我可以从使用指针中受益吗?
保持这样一个事实,即我不喜欢通过使用多图之类的东西来增加地图的大小,因为结构看起来几乎很简单。
提前谢谢了。