当arraylist逻辑大小达到其容量时,它是否将新数组链接到末尾,还是创建一个新数组并将所有值复制到新数组中?
答案 0 :(得分:1)
如果您指定了您感兴趣的语言,您可能会得到更好的答案(即,更有针对性,对您更有用)。许多常见的实现使用一个值块(包括指针,如果是一个数组指针);当块中的空间用完时,将分配更大的块,将现有值向前复制到新空间,并释放旧空间。你有时可能会对这种情况产生一些影响(例如,新空间与旧空间相比有多大),但(当然)它依赖于实现。大多数实现都在确保每次添加或删除一个项目时都不会发生重新分配空间。这意味着在这种实现中存在未使用的空间。
再次,如果您有更具体的兴趣,建议您尝试编辑您的帖子以稍微关注它。
如果您只是想学习,我建议您使用Python。 StackOverflow上有很多东西你可能会感兴趣;这只是一对:array size,performance。
答案 1 :(得分:0)
第二个 - 它创建一个新数组并复制旧数组。如果你想避免复制,那么你可以使用LinkedList
代替,它只是添加链接的新链接;但是当然你没有得到单个元素数组提供的快速索引。