【大数据基础知识】Scala中的数组

发布 : 大数据培训      来源:大数据干货资料

2021-11-03 14:44:14

Scala中的数组分为了不可变的数组Array和可变数组ArrayBuffer。可变数组指的是长度不可变,内容可变。可变数组指的是长度和内容都可变。Scala中默认使用的是不可变数组,要使用可变数组,要先导入才能使用。

1. 不可变数组Array

定义方式一:

scala> val arr1=Array[Int](1,3,5,6,8)

arr1: Array[Int] = Array(1, 3, 5, 6, 8)

scala> val arr2=Array(2.6,5.8,9.99)

arr2: Array[Double] = Array(2.6, 5.8, 9.99)

从上面示例中可以看到,用这种方式定义数组时,可以指明数组类型,也可以不指定。不指定时会根据数据类型自动推断数组的类型。

定义方式二:

scala> val arr3=new Array[Int](5)

arr3: Array[Int] = Array(0, 0, 0, 0, 0)

使用此种方式定义时,必须指明数组类型和长度。定义的同时,会给各元素赋初值。

取值与赋值:

scala> arr1(0)

res3: Int = 1

scala> arr1(3)=10

scala> arr1(6)

java.lang.ArrayIndexOutOfBoundsException: 6

... 32 elided

取值与赋值都是使用数组的下标,下标索引从0开始。同样要注意下标越界的问题。

2. 可变数组ArrayBuffer

要使用可变数组,首先要导入:

scala> val ab=ArrayBuffer(1,2,3,4,5,6)

:11: error: not found: value ArrayBuffer

val ab=ArrayBuffer(1,2,3,4,5,6)

如果不导入直接使用,会报上述错误。

scala> import scala.collection.mutable.ArrayBuffer

import scala.collection.mutable.ArrayBuffer

scala> val ab=ArrayBuffer(1,2,3,4,5,6)

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

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

ab2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

从上例中可以看到,ArrayBuffer的定义同样可以采用两种形式。因为长度是可变的,所以采用第二种方式定义时,可以不用指定长度,只指明类型即可。

3. ArrayBuffer上的常用操作

添加一个或多个元素:

+=

添加集合:

++=

删除一个或多个元素:

-=

删除集合元素:

--=

插入元素: 第一个参数是下标,第二个参数是一个可变参数列表,支持同时插入多个值

(n:Int,ele:Int*)

删除元素:可以直接指定下标,还可以同时指定下标和要删除的元素个数

remove(n:Int)

remove(n:Int,count:Int)

清空集合:

clear

判空:

isEmpty

scala> ab

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

scala> ab+=10

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

scala> ab+=(20,30)

res10: ab.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 10, 20, 30)

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

res11: ab.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 10, 20, 30, 5, 6)

scala> ab-=1

res12: ab.type = ArrayBuffer(2, 3, 4, 5, 6, 10, 20, 30, 5, 6)

scala> ab-=(5,6)

res13: ab.type = ArrayBuffer(2, 3, 4, 10, 20, 30, 5, 6)

scala> ab--=Array(10,20,30)

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

scala> ab.(1,6,6,6)

scala> ab

res16: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2, 6, 6, 6, 3, 4, 5, 6)

scala> ab.remove(3)

res17: Int = 6

scala> ab

res18: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2, 6, 6, 3, 4, 5, 6)

scala> ab.remove(0,2)

scala> ab

res20: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(6, 3, 4, 5, 6)

scala> ab.isEmpty

res21: Boolean = false

scala> ab.clear

scala> ab.isEmpty

res23: Boolean = true

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部