gpt4 book ai didi

scala - ArrayBuffer 的大小

转载 作者:行者123 更新时间:2023-12-01 07:05:37 27 4
gpt4 key购买 nike

假设我创建了初始大小等于 10 的 ArrayBuffer

val buf = new ArrayBuffer[Int](10)

如果我确实调用了方法 buf.size - 缓冲区的大小是否等于 0?

最佳答案

数组缓冲区类是一个可扩展的数组,您可以在其中使用 += 在末尾有效地添加元素.最初,在创建时,元素数为 0 - 即 size的集合。

在内部,数组缓冲区维护一个元素数组,其中仅包含 null s 在创建缓冲区时。一旦添加了一个元素,就会向数组中写入一次。当数组变满时,会分配一个双倍长度的新数组并将元素复制到其中。 amortized添加元素的时间仍然是 O(1)。

ctor 参数只是说明内部数组的初始长度是多少。虽然改变初始长度不会改变+=的摊销成本如果您知道将添加多少元素,它可以避免不必要的重新分配,从而提高效率(本质上,减少了摊销分析中的常数)。

这个参数不是指大小,而是指数组缓冲区的容量。

关于scala - ArrayBuffer 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com