第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)技术交流群
关注艾叔公众号,获取更多一手信息
标签:ab,scala,Int,ArrayBuffer,元素,Scala,---,Array 来源: https://blog.csdn.net/wenaideyu/article/details/120524920