【发布时间】:2012-07-18 20:16:43
【问题描述】:
我需要存储大量信息,例如 java 列表中的“名称”。项目的数量可以改变(或者简而言之我无法预定义大小)。我认为,从内存分配的角度来看,LinkedList 将是比 ArrayList 更好的选择,因为对于 ArrayList,一旦达到最大大小,内存分配会自动加倍,因此总是有可能分配比 ArrayList 更多的内存需要什么。
我从这里的其他帖子中了解到,存储在 LinkedList 中的单个元素比 ArrayList 占用更多空间,因为 LinkedList 还需要存储节点信息,但我仍然猜测我定义的场景 LinkedList 可能是更好的选择。另外,我不想涉及性能方面(获取、删除等),因为已经讨论了很多。
【问题讨论】:
-
看来您已经有了答案。链接列表会更好,因为当达到最大值时它的大小不会翻倍。假设您有 251 个名称,然后当您达到 250 时,该数组加倍至 500。然后您在内存中分配了 249 个额外的点,而这一切都没有。基本上我想说的是从长远来看 Link-List > ArrayList 就内存而言。
-
@Eric Robinson:以下来自其他用户的cmets证明我的理解不正确。您可能也想注意这一点。谢谢..
-
查看此答案以了解两者的内存占用情况:stackoverflow.com/questions/322715/…
标签: java list collections arraylist linked-list