一、数组分类
-
mutable 可变——元素个数和值等可以改变(需要导包)
-
immutable不可变——数组的长度不能被改变,但是值可以被改变
在scala.collection.mutable/immutable包中,常用的Array就是immutable下面的数组。
二、不可变数组
1、语法
var arr1=Array(11,22,33) var arr2: Array[Any] =Array(11,22,"zhangsan") var arr3: Array[Int] =Array[Int](11,22,33)
注意:
-
如果数组在声明的时候不定义数据类型,会进行自适配,返回最后的父类。
-
Scala中的数组中可以存放不同的数据类型。
-
如果数组中的数据元素类型不一样,会转换成就近的父类型
例如:var arr1: Array[AnyVal] =Array[AnyVal](11,22,33,true)
2、指定长度声明
- 如果指定了数组的类型是可以按如下声明;
val arr1=new Array[Int](3)
- 如果没有指定数组的类型直接给了数组固定的长度,那么返回结果是Nothing类型。Nothing类型代表错误。所以如果new Array必须添加类型: new Array[Int](4)。如果不加泛型则内容都是Nothing,不能存放任何的值。
var arr: Array[Nothing] =new Array(3)
- 不可变数组指的是: 一旦当前数组声明完成以后,数组的长度是不可以改变的,但是数组中元素的值是可以改变的。
3、数组取值
按数组的下标进行取值,和赋值的方式一样的,都是通过下标操作:
java [ ]------->arr[index]
scala ( )------->arr(index)
4、不可变数组拼接
(1)数组的长度不能改变,但是数组可以和数组进行拼接形成新的数组,原来数组的长度不变。
(2)使用 ++ 进行拼接数组, ++是Scala中的一个方法
(3)如果拼接单个元素使用 :+
三、可变数组
murable包下面的可变集合ArrayBuffer——声明使用var声明
1、声明方式
声明的时候需要导包:import scala.collection.mutable.ArrayBuffer
如果使用的是new的方式创建的ArrayBuffer,必须声明泛型,不然自适配类型是Nothing
2、基本操作
声明:var array=ArrayBuffer(1,2,3,4,5)
添加数据: +=
添加数组: ++ / ++=
删除数组中单个数据: -=
删除数组中的数组: -- / --=
3、其他操作
添加数据:insert(index,data) / insert(index,data1,data2......)
删除数据:remove(index) / remove(index,删除几个元素)
清空数组中所有元素:clear
判断当前集合中元素是否为空:imEmpty
此外还有,max、min、sum、length、sorted等方法
四、转换
Array转成ArrayBuffer: toBuffer
ArrayBuffer转成Array:toArray