1. 程式人生 > >Scala陣列——Array/ArrayBuffer

Scala陣列——Array/ArrayBuffer

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)