1. 程式人生 > >詳解Scala集合類之陣列的語法格式以及簡單例項

詳解Scala集合類之陣列的語法格式以及簡單例項

在這裡插入圖片描述
簡介
Scala 語言中提供的陣列是用來儲存固定大小的同類型元素。宣告陣列是宣告一個就像numbers這樣的變數,然後使用 numbers[0]、numbers[1]、…、numbers[99] 來表示一個個單獨的變數。陣列中某個指定的元素是通過索引來訪問的。
陣列的第一個元素索引為0,最後一個元素的索引為元素總數減1。
宣告陣列
陣列語法格式:
var z:Array[String] = new ArrayString 或 var z = new ArrayStringz(0) = "Runoob"; z(1) = "Baidu"; z(4/2) = "Google"或var z = Array(“Runoob”, “Baidu”, “Google”)
簡單例項
定長陣列(Array)
//定義一個長度為10的數值陣列 scala> val numberArray=new ArrayInt numberArray: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) //定義一個長度為10的String型別陣列 scala> val strArray=new ArrayString strArray: Array[String] = Array(null, null, null, null, null, null, null, null, null, null)//可以看出:複雜物件型別在陣列定義時被初始化為null,數值型被初始化為0//陣列元素賦值 scala> strArray(0)="First Element" //需要注意的是,val strArray=new ArrayString //這意味著strArray不能被改變,但陣列內容是可以改變的 scala> strArray res62: Array[String] = Array(First Element, null, null, null, null, null, null, null, null, null)//另一種定長陣列定義方式 //這種呼叫方式其實是呼叫其apply方法進行陣列建立操作 scala> val strArray2=Array("First","Second") strArray2: Array[String] = Array(First, Second)

變長陣列(ArrayBuffer)
//要使用ArrayBuffer,先要引入scala.collection.mutable.ArrayBuffer scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer//建立String型別ArrayBuffer陣列緩衝 scala> val strArrayVar=ArrayBufferString strArrayVar: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()//+=意思是在尾部新增元素 scala> strArrayVar+="Hello" res63: strArrayVar.type = ArrayBuffer(Hello)//+=後面還可以跟多個元素的集合 //注意操作後的返回值 scala> strArrayVar+=("World","Programmer") res64: strArrayVar.type = ArrayBuffer(Hello, World, Programmer)//顯示完整陣列內容 scala> strArrayVar res65: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Hello, World, Programmer)//++=用於向陣列中追加內容,++=右側可以是任何集合 //追加Array陣列 scala> strArrayVar++=Array("Wllcome","To","XueTuWuYou") res66: strArrayVar.type = ArrayBuffer(Hello, World, Programmer, Wllcome, To, Xue TuWuYou) //追加List scala> strArrayVar++=List("Wellcome","To","XueTuWuYou") res67: strArrayVar.type = ArrayBuffer(Hello, World, Programmer, Wllcome, To, Xue TuWuYou, Wellcome, To, XueTuWuYou)//刪除末尾n個元素 scala> strArrayVar.trimEnd(3)scala> strArrayVar res69: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(Hello, World, Programmer, Wllcome, To, XueTuWuYou) ``````//建立整型陣列緩衝 scala> var intArrayVar=ArrayBuffer(1,1,2) intArrayVar: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2)//在陣列索引為0的位置插入元素6 scala> intArrayVar.insert(0,6)scala> intArrayVar res72: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(6, 1, 1, 2)//在陣列索引為0的位置插入元素7,8,9 scala> intArrayVar.insert(0,7,8,9)scala> intArrayVar res74: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(7, 8, 9, 6, 1, 1,2)//從索引0開始,刪除4個元素 scala> intArrayVar.remove(0,4)scala> intArrayVar res77: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2)//轉成定長陣列 scala> intArrayVar.toArray res78: Array[Int] = Array(1, 1, 2)//將定長陣列轉成ArrayBuffer scala> res78.toBuffer res80: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 1, 2)
陣列遍歷
//to scala> for(i <- 0 to intArrayVar.length-1) println("Array Element: " +intArrayVar(i)) Array Element: 1 Array Element: 1 Array Element: 2 //until scala> for(i <- 0 until intArrayVar.length) println("Array Element: " +intArrayVar(i)) Array Element: 1 Array Element: 1 Array Element: 2//陣列方式(推薦使用) scala> for(i <- intArrayVar) println("Array Element: " + i) Array Element: 1 Array Element: 1 Array Element: 2//步長為2 scala> for(i <- 0 until (intArrayVar.length,2)) println("Array Element: " +intA rrayVar(i)) Array Element: 1 Array Element: 2//倒序輸出 scala> for( i<- (0 until intArrayVar.length).reverse) println("Array Element: "+ intArrayVar(i)) Array Element: 2 Array Element: 1 Array Element: 1
陣列轉換
//生成新的陣列,原陣列不變 //緩衝資料轉換後產生的仍然是緩衝陣列 scala> var intArrayVar2=for(i <- intArrayVar) yield i*2 intArrayVar2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2, 2, 4)//定長陣列轉轉後產生的仍然是定長陣列,原陣列不變 scala> var intArrayNoBuffer=Array(1,2,3) intArrayNoBuffer: Array[Int] = Array(1, 2, 3)scala> var intArrayNoBuffer2=for(i <- intArrayNoBuffer) yield i*2 intArrayNoBuffer2: Array[Int] = Array(2, 4, 6)//加入過濾條件 scala> var intArrayNoBuffer2=for(i <- intArrayNoBuffer if i>=2) yield i*2 intArrayNoBuffer2: Array[Int] = Array(4, 6)常用運算
//定義一個整型陣列 scala> val intArr=Array(1,2,3,4,5,6,7,8,9,10) intArr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)//求和 scala> intArr.sum res87: Int = 55 //求最大值 scala> intArr.max res88: Int = 10 scala> ArrayBuffer("Hello","Hell","Hey","Happy").max res90: String = Hey//求最小值 scala> intArr.min res89: Int = 1 //toString()方法 scala> intArr.toString() res94: String = [[email protected]//mkString()方法 scala> intArr.mkString(",") res96: String = 1,2,3,4,5,6,7,8,9,10scala> intArr.mkString("<",",",">") res97: String = <1,2,3,4,5,6,7,8,9,10>多維陣列
//定義2行3列陣列 scala> var multiDimArr=Array(Array(1,2,3),Array(2,3,4)) multiDimArr: Array[Array[Int]] = Array(Array(1, 2, 3), Array(2, 3, 4))//獲取第一行第三列元素 scala> multiDimArr(0)(2) res99: Int = 3//多維陣列的遍歷 scala> for(i <- multiDimArr) println( i.mkString(",")) 1,2,3 2,3,4
文章來自:https://www.itjmd.com/news/show-3222.html