你好,游客 登录
背景:
阅读新闻

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

[日期:2021-09-26] 来源:  作者: [字体: ]

本文来自艾叔编著的《零基础快速入门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中传入要移除的indexindex0开始编号。

移除第4个元素,index3

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. ArrayBufferArray互相转换

ArrayBufferArray

scala> val numsArray = ab.toArray

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

ArrayBufferArray

scala> val numsBuffer = numsArray.toBuffer

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

6. 要注意的地方

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

 

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

 

 

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

 

 

收藏 推荐 打印 | 阅读:
相关新闻