Scala數組小結

1.定長數組

定長數組:指長度不可變的數組Array。
第一種方式:
先聲明一個數組,後初始化該數組:html

scala> val array = new Array[Double](5)
array: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0)

賦值方式:array(index) = value
第二種方式:java

scala> val array = Array(1, 2, 3, 4, 5)
array: Array[Int] = Array(1, 2, 3, 4, 5)

第三種方式,Array.fill(length)(value):數組

scala> val array = Array.fill(5)(3.5)
array: Array[Double] = Array(3.5, 3.5, 3.5, 3.5, 3.5)

若是fill第二個參數只寫一個值的話,那麼該數組的全部元素都是該值,可是若是第二個參數是一個iterator或者random,那麼數組就會被賦值爲它們的值。dom

scala> val array = Array.fill(2)(math.random)
array: Array[Double] = Array(0.2810736748034083, 0.7261142068882558)

第四種方式,ofDim[T](length):函數

scala> val array = Array.ofDim[Double](5)
array: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0)

賦值方式:array(index) = valuescala

2.變長數組

變長數組:指數組長度能夠變化。
聲明一個空的數組,此時數組沒有任何元素,且不能如下標索引賦值:code

val array = new ArrayBuffer[T]()

在數組尾部增長一個類型爲T的元素e1:htm

array += e1

在數組尾部增長一個類型爲T的元素e一、e2:索引

array += (e1, e2)

在數組尾部增長一個類型爲T的數組:rem

array ++= Array(e1, e2)

在第index元素後插入e1:

array.insert(index, e1)

在第index元素後插入e一、e2:

array.insert(index, e1, e2)

移除第index元素後的n個元素:

array.remove(index, n)

3多維數組

3.1定長多維數組

第一種方式:

val array = new Array[Array[Int]](5) 
scala> val array = new Array[Array[Int]](5)
array: Array[Array[Int]] = Array(null, null, null, null, null)

此時,內部的每一個數組長度是不同的,相似於Java中的以下定義:

int[][] array = new int[2][];

第二種方式(推薦):
用ofDim[T](rows, column, height,...)函數定義,但最多能夠定義五維數組,不過已經夠用了。

scala> val array = Array.ofDim[Int](2,3)
array: Array[Array[Int]] = Array(Array(0, 0, 0), Array(0, 0, 0))

3.2變長多維數組

scala> val arr1 = new ArrayBuffer[ArrayBuffer[Int]]()
arr1: scala.collection.mutable.ArrayBuffer[scala.collection.mutable.ArrayBuffer[Int]] = ArrayBuffer()

4.定長數組和變長數組的轉換

定長數組imarray轉換成變長數組array:

array = imarray.toBuffer

變長數組array轉換成定長數組imarray:

imarray = array.toArray

當定/變長多維數組相互轉換時,只轉換最外面那層數組:

scala> val array = Array(Array(1,2),Array(3,4))
arr: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))

scala> array.toBuffer
res14: scala.collection.mutable.Buffer[Array[Int]] = ArrayBuffer(Array(1, 2), Array(3, 4))
相關文章
相關標籤/搜索