scala數組:分爲定長數組和變長數組java
scala> val arr1 = new Array[Int](8) //只定義8個是整型類型的定長數組,沒有賦值,每一個數組裏面的值是0python
arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0)數組
scala> val arr1 = new Array[String](8) //只定義8個是字符串類型的定長數組,沒有賦值,每一個值顯示是爲nullspa
arr1: Array[String] = Array(null, null, null, null, null, null, null, null)scala
scala> println(arr1) //直接打印數組是一個引用,並無打印出數組裏面的內容。rem
[Ljava.lang.String;@4973f7dd字符串
scala> println(arr1.toBuffer) //使用toBuffer方法將數組裏面的內容轉換成數組緩衝裏面,將其打印出來。it
ArrayBuffer(null, null, null, null, null, null, null, null)io
下面是直接賦值方式定義一個數組:for循環
scala> val arr2 = Array("java","scala","python") //沒有用new是調用的一個靜態方法,並給數組裏面每一個元素賦值
arr2: Array[String] = Array(java, scala, python)
scala> val arr2 = new Array("java","scala","python") //使用一個new關鍵字直接賦值定義是錯誤的寫法
^
error: too many arguments (3) for constructor Array: (_length: Int)Array[T]
數組的調用方法數組名後面小括號裏面跟下標(下標從0開始)
scala> println(arr2(0))
java
變長數組:scala裏面默認的是一個定長數組,咱們要用變長數組須要導入一個變長數組所依賴的包:
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val arr3 = ArrayBuffer[Int]() //須要指定一個Int類型的一個範型
arr3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> arr3 += 1 //向變長數組裏面添加一個數據
res17: arr3.type = ArrayBuffer(1)
scala> arr3 += (2,3,4) //向變長數組裏面添加多個數據
^
warning: method += in trait Growable is deprecated (since 2.13.0): Use `++=` (addAll) instead of varargs `+=`
res18: arr3.type = ArrayBuffer(1, 2, 3, 4) //較高版本已經不太友好的使用+=來添加多個元素了,提示使用++=方法向變長數組裏面添加數據
scala> arr3 ++= Array(5, 6) //向變長數組裏面添加一個定長數組裏面的內容
res20: arr3.type = ArrayBuffer(1, 2, 3, 4, 5, 6)
scala> arr3 ++= ArrayBuffer(7,8) //向變長數組裏面添加一個變長數組裏面的內容
res21: arr3.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8)
變長數組的添加與刪除
scala> arr3.insert(0, -1) //第 0 個位置插入 -1
scala> arr3.remove(2,2) //移除從第二個位置開始兩個元素
scala> println(arr3.toBuffer)
ArrayBuffer(-1, 1, 4, 5, 6, 7, 8)
for循環取數組裏面的數:
scala> for(i<-arr3) println(i)
-1
1
4
5
6
7
8
scala> for(i<- 0 until arr3.length) println(arr3(i))
-1
1
4
5
6
7
8
scala> for(i<- (0 until arr3.length).reverse) println(arr3(i))
8
7
6
5
4
1
-1
scala> val res = for(i<-arr3) yield i*10 //yield是把數組裏面的每個值都取出來,而且把每一個值都放到一個集合裏面的這一個做用。而且會產生一個新的數組res
res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-10, 10, 40, 50, 60, 70, 80)
scala> res
res34: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-10, 10, 40, 50, 60, 70, 80)
scala> arr3.sum
res35: Int = 30
scala> arr3.max
res36: Int = 8
scala> arr3.sorted
res37: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(-1, 1, 4, 5, 6, 7, 8)
scala> arr3.min
res38: Int = -1