微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第5章 Scala基本数据结构---ArrayBuffer

本文来自艾叔编著的《零基础快速入门Scala》免费电子书,添加文末艾叔微信,获取完整版的PDF电子书

5.2  ArrayBuffer

Array的大小在声明时就已经固定了,后续是无法改变的。如果Array的大小需要变化(主要是增大),可以使用ArrayBuffer。

1. 声明ArrayBuffer

例子代码如下,首先引入ArrayBuffer所需的package。

scala> import scala.collection.mutable.ArrayBuffer

声明一个ArrayBuffer,[Int]表示此数组元素的类型为Int,数组元素的个数为0。

scala> val ab = new ArrayBuffer[Int]()

2. ArrayBuffer添加元素

给数组ab添加元素,使用+=添加元素。

scala> ab += 1

res1: ab.type = ArrayBuffer(1)

添加一个元素。

scala> ab += 2

res3: ab.type = ArrayBuffer(1, 2)

添加一个元素。

scala> ab += 3

res4: ab.type = ArrayBuffer(1, 2, 3)

添加多个元素。

scala> ab += (4,5,6)

res6: ab.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

3. ArrayBuffer移除元素

使用remove方法,可以移除ArrayBuffer中的元素,remove中传入要移除的index,index从0开始编号。

移除第4个元素,index是3。

res6: ab.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

scala> ab.remove(3)

res7: Int = 4

验证。

scala> ab.foreach(println)

1

2

3

5

6

4. ArrayBuffer插入元素

使用inset,可以从指定的index开始,插入若干元素,inset定义如下。

def insert(n: Int,elems: Int*): Unit

n表示插入的位置,用index来表示,elems表示插入的元素,类型是Int,*表示可以插入多个元素。

例如,从index=3开始,插入3个元素,每个元素的值都是6。

scala> ab.insert(3, 6, 6, 6)

验证,第一个6所在的位置index就是3。

scala> ab.foreach(println)

1

2

3

6

6

6

5

6

5. ArrayBuffer和Array互相转换

ArrayBuffer转Array。

scala> val numsArray = ab.toArray

numsArray: Array[Int] = Array(1, 2, 3, 6, 6, 6, 5, 6)

ArrayBuffer转Array。

scala> val numsBuffer = numsArray.toBuffer

numsBuffer: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3, 6, 6, 6, 5, 6)

6. 要注意的地方

  • 同Array一样,ArrayBuffer中的元素同样可以被修改
  • Array中的map、filter、flatMap、reduce、排序等操作,对ArrayBuffer同样有效;
  • ArrayBuffer非常灵活,但是每次增加元素,都需要动态申请内存,这样会导致系统开销,操作不是很频繁的情况下,对性能不会有大的影响,但是,如果数据量大、操作频繁,则对性能会有大的影响,这种情况下,应想办法尽量提前确定数组大小,使用Array,性能会有显著改善。

加艾叔微信,加入Linux(Shell+Zabbix)、大数据(Spark+Hadoop)、云原生(Docker+Kubernetes)技术交流群

关注艾叔公众号,获取更多一手信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐