1. 程式人生 > >scala數組相關操作

scala數組相關操作

原來 方法 變長數組 .so extend 每次 整數 插入 變量

object ArrayOperate extends App {
  /**
    * 定長數組
    */
  val nums = new Array[Int](10) //10個整數的數組,所有元素初始化值為0
  //訪問數組元素用()
  println(nums(1)) //返回值為 0

  val s = Array("Hello", "World")//長度為2的Array[String]

  /**
    * 變長數組: 緩沖數組
    */
  import scala.collection.mutable.ArrayBuffer
  val b = ArrayBuffer[Int]()//或者 new ArrayBuffer[Int]這樣寫法也行

  
//+= 是在尾端添加一個元素 b += 1 // println(b) // 值為: ArrayBuffer(1) b += (2,3,4,5)// 結果為: ArrayBuffer(1, 2, 3, 4, 5) // ++= 可以添加任何集合 b ++= Array(10,15,20)// 結果: ArrayBuffer(1, 2, 3, 4, 5, 10, 15, 20) //移除最後2個元素 b.trimEnd(2) //結果: ArrayBuffer(1, 2, 3, 4, 5, 10) //todo 在數組尾端 移除添加是一個高效的操作, 也可以在任意位子上插入或移除操作, //todo 但這樣操作並不高效 --那個位子上之後的元素都會平移
b.insert(0, 100, 200) //ArrayBuffer(100, 200, 1, 2, 3, 4, 5, 10) //移除第2個位子上的元素 b.remove(1) //ArrayBuffer(100, 1, 2, 3, 4, 5, 10) //在下標1之後 移除2個元素 b.remove(1, 2)//ArrayBuffer(100, 3, 4, 5, 10) //緩沖數組 轉數組 var arr = b.toArray //數組 轉緩沖數組 var buffArr = arr.toBuffer //ArrayBuffer(100, 3, 4, 5, 10) /** * 數組遍歷 和 數組緩沖
*/ //遍歷 數組/緩沖數組方式 for (i <- 0 until arr.length) { //變量i的取值為 0 到arr.length - 1 println(s"$i :" + arr(i)) } //for ( i <- 區間) 這種寫法會讓i 遍歷該區間的所有值 val gt = 0 until (arr.length, 2) //返回值: inexact Range 0 until 5 by 2 /** * 數組轉換 */ // for (...) yield 循環會創建一個和原來的集合相同的新集合。 結果包含yield後面的表達式(的值) 每次叠代對應一個 val newBuff = for (elem <- buffArr if elem == 100 ) yield { elem * 8 } println(newBuff) //ArrayBuffer(800) //另一種寫法 val newBuff2 = buffArr.filter(_ == 100).map(_ * 8) println(newBuff2)//ArrayBuffer(800) /** * 常用算法 */ println(Array(1,2,3,4,5).sum) //15 println(buffArr.max)//100 //sorted方法將數組或者 數組緩沖 排序並返回經過排序的數組或者數組緩沖, 這個過程不會修改原始版本 val bBuff = ArrayBuffer(1,7,2,9) val bSorted = bBuff.sorted println(bSorted) }

scala數組相關操作