【发布时间】:2012-02-20 23:21:01
【问题描述】:
当数组列表的逻辑大小达到其容量时,它是在末尾链接一个新数组还是创建一个新数组并将所有值复制到新数组中?
【问题讨论】:
标签: arrays arraylist data-structures language-agnostic
当数组列表的逻辑大小达到其容量时,它是在末尾链接一个新数组还是创建一个新数组并将所有值复制到新数组中?
【问题讨论】:
标签: arrays arraylist data-structures language-agnostic
如果您指定您感兴趣的语言,您可能会得到更好的答案(即更有针对性、对您更有用)。许多常见的实现使用一个值块(包括指针,如果一个数组指针);当块中的空间用完时,分配一个更大的块,将现有值向前复制到新空间,并释放旧空间。您有时会对这种情况的发生方式产生一些影响(例如,新空间与旧空间相比要大多少),但(当然)它取决于实现。大多数实现都致力于确保每次添加或删除一项时不会发生空间的重新分配。这意味着在此类实现中存在未使用的空间。
同样,如果您有更具体的兴趣,建议您尝试编辑您的帖子以使其更加集中。
如果您只是想学习,我建议您使用 Python。 StackOverflow 上有很多你可能会觉得有趣的东西;这只是一对:array size,performance。
【讨论】:
第二个——它创建一个新数组并复制旧数组。如果您想避免复制,则可以改用LinkedList,它只是将新链接添加到链中;但当然,您不会获得单个元素数组提供的快速索引。
【讨论】:
LinkedList 使用链接节点链,而ArrayList 使用数组。