在Scala中,Array代表的含義與Java類似,也是長度不可改變的數組。此外,由於Scala與java都是運行在JVM中,雙方可以互相調用,因此Scala數組底層實際上是java數組。列如字符串數組java的String[],整數的數組int[].
val a = new Array[Int](10) val a = new Array[String](10)
可以直接使用Array()創建數組,元素類型自動推斷
val a = Array("Hello","world") a(0) ="hi" val a = Array("Hello",30) a: Array[Any]("Hello",30)
ArrayBuffer:
在Sacla中,如果需要類似於JAVA中的ArrayList這種可變長度的集合類,則可以使用ArrayBuffer.
#如果不想每次都是用完全限定名,則可以預先導入ArrayBuffer類 import scala.collection.mutable.ArrayBuffer //使用ArrayBuffer的方式可以創建一個空的ArrayBuffer val b = ArrayBuffer[Int]() //使用+=操作符,可以添加一個元素,或者多個元素
//這個語法必須謹記在心!因為Sprak源碼里大量使用了這種集合操作語法! b+=1 b+=(2,3,4,5) //使用++=操作符,可以添加一個元素,或者多個元素 b++=Array(6,7,8,9) //使用trimEnd()函數,可以從尾部截斷指定個數的元素 b.trimEnd(5)
//使用insert()函數可以在指定位置插入元素
//但是這種操作效率很低,因為需要移動指定位置后的所有元素
b.insert(5,6)
b.insert(6,7,8,9,10)
//使用remove()函數可以移除指定位置元素
b.remove(1)
b.remove(1,3)
//Array與ArrayBuffer可以互相進行轉換
b.toArray
a.toBuffer
遍歷Array和ArrayBuffer
//使用for循環和until遍歷Array/ArrayBuffer /使用until是RichInt提供的函數 for(i <- 0 until b.length) println(b(i)) //跳躍遍歷Array/ArrayBuffer for(i <- until (b.length,2)) println(b(i)) //從尾部遍歷Array/ArrayBuffer for(i <- (0 until b.length).reverse) print(b(i)) //使用"增強型for循環" 遍歷Array/AraayBuffer for(e <- b) print(e)
數組常見的操作:
//數組元素求和 val a = Array(1,2,3,4,5) val sum = a.sum //獲取數組最大值 val max = a.max //對數組進行排序 scala.util.Sorting.quickSort(a) //獲取數組中的所有元素類容 a.mkString a.mkString(",") a.mkString("<",",",">") //toString函數 a.toString b.toString