首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayBuffer的大小

ArrayBuffer的大小
EN

Stack Overflow用户
提问于 2011-06-20 12:53:15
回答 4查看 9.3K关注 0票数 3

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

代码语言:javascript
复制
val buf = new ArrayBuffer[Int](10)

如果我真的调用了方法buf.size --得到的缓冲区大小等于0?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-20 13:14:00

是的,因为size (在本例中继承自IndexedSeq)指的是集合中元素的数量,而不是底层数据结构的大小或长度。

票数 5
EN

Stack Overflow用户

发布于 2011-06-20 18:57:20

数组buffer类是一个可扩展的数组,您可以在其中使用+=高效地在末尾添加元素。最初,在创建元素时,元素的数量是0-这被称为集合的size

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

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

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

票数 11
EN

Stack Overflow用户

发布于 2014-04-30 13:44:00

使用给定的大小和值初始化arraybuffer:

代码语言:javascript
复制
ArrayBuffer.fill(10)(5)

这将得到:

代码语言:javascript
复制
scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(5, 5, 5, 5, 5, 5, 5, 5, 5, 5)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6406934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档