Scala陣列——Array/ArrayBuffer
阿新 • • 發佈:2019-01-25
1.定長陣列-Array
//方式一
//長度為5的整數陣列,所有元素初始化為0
val ary1=new Array[Int](5)
//長度為5的字串陣列,所有元素初始化為null
val ary2=new Array[String](5)
//方式二
//長度為2的陣列,資料型別自動推斷出來,已經提供初始值就不需要new關鍵字
val ary3= Array("zhangsan","lisi")
//
val ary4= Array(1 to 10 :_*);
println("陣列的元素:"+ary1(0))
//賦值
ary1(0)=11
println("改變後陣列的元素:"+ary1(0))
- 陣列中的常用方法
val numbers = Array(1, 2, 3, 4) //宣告一個數組物件
val first = numbers(0) // 讀取第一個元素
numbers(3) = 100 // 替換第四個元素為100
val biggerNumbers = numbers.map(_ * 2) // 所有元素乘2
val a = Array(1,2)
val b = Array(3,4)
val c = a ++ b
//c中的內容是(1,2,3,4)
val a = Array(1, 2, 3,4,4,5,6,6)
val c = a.distinct
println(c. mkString(",")) // 1,2,3,4,5,6
mkString的使用
var array=Array(1 to 10 : _ *)
println(array.mkString)
println(array.mkString(","))
println(array.mkString("(",",",")"))
結果:
12345678910
1,2,3,4,5,6,7,8,9,10
(1,2,3,4,5,6,7,8,9,10)
// 陣列元素求和
val a = Array(1, 2, 3, 4, 5)
val sum = a.sum
// 獲取陣列最大值
val max = a.max
//獲取陣列最小值
val min = a.min
// 對陣列進行排序
scala.util.Sorting.quickSort(a)
// toString函式
a.toString
b.toString
2.ArrayBuffer-變長陣列
- 如果不想每次都使用全限定名,則可以預先匯入ArrayBuffer類
import scala.collection.mutable.ArrayBuffer
//變長陣列ArrayBuffer
var numArrayBuffer = new ArrayBuffer[Int]();
// 使用+=操作符,可以新增一個元素,或者多個元素
// 這個語法必須要謹記在心!因為spark原始碼裡大量使用了這種集合操作語法!
numArrayBuffer += 1
numArrayBuffer += (2, 3, 4, 5)
// 使用++=操作符,可以新增其他集合中的所有元素
numArrayBuffer ++= Array(6, 7, 8, 9, 10)
// 使用insert()函式可以在指定位置插入元素
// 但是這種操作效率很低,因為需要移動指定位置後的所有元素
numArrayBuffer.insert(5, 6)
numArrayBuffer.insert(6, 7, 8, 9, 10)
// 使用remove()函式可以移除指定位置的元素
numArrayBuffer.remove(1)
numArrayBuffer.remove(1, 3)
// Array與ArrayBuffer可以互相進行轉換
numArrayBuffer.toArray
numArrayBuffer.toBuffer
// 使用trimEnd()函式,可以從尾部截斷指定個數的元素
numArrayBuffer.trimEnd(5)
3.陣列遍歷
for (i <- 0 until numArrayBuffer.length)
println(numArrayBuffer(i))
// 跳躍遍歷Array / ArrayBuffer
for(i <- 0 until (numArrayBuffer.length, 2))
println(numArrayBuffer(i))
// 從尾部遍歷Array / ArrayBuffer
for(i <- (0 until numArrayBuffer.length).reverse)
println(numArrayBuffer(i))
// 使用“增強for迴圈”遍歷Array / ArrayBuffer
for (e <- numArrayBuffer)
println(e)