ArrayBuffer 在Scala中,如果需要類似於Java中的ArrayList這種長度可變的集合類,則可以使用ArrayBuffer。 // 如果不想每次都使用全限定名,則可以預先導入ArrayBuffer類 import scala.collection.mutable.ArrayBuffe ...
ArrayBuffer
在Scala中,如果需要類似於Java中的ArrayList這種長度可變的集合類,則可以使用ArrayBuffer。
// 如果不想每次都使用全限定名,則可以預先導入ArrayBuffer類
import scala.collection.mutable.ArrayBuffer
// 使用ArrayBuffer()的方式可以創建一個空的ArrayBuffer
val b = ArrayBuffer[Int]()
// 使用+=操作符,可以添加一個元素,或者多個元素
// 這個語法必須要謹記在心!因為spark源碼里大量使用了這種集合操作語法!
b += 1
b += (2, 3, 4, 5)
// 使用++=操作符,可以添加其他集合中的所有元素
b ++= Array(6, 7, 8, 9, 10)
// 使用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 <- 0 until (b.length, 2))
println(b(i))
// 從尾部遍歷Array / ArrayBuffer
for(i <- (0 until b.length).reverse)
println(b(i))
// 使用“增強for迴圈”遍歷Array / ArrayBuffer
for (e <- b)
println(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