1. 程式人生 > >Scala-Unit4-Scala陣列/集合

Scala-Unit4-Scala陣列/集合

一、Scala陣列

  1.陣列的定義:

  方法一:val arr = new Array[String](3)

    String代表資料的元素型別、3表示陣列的長度

  方法二:val arr = Array[Int](1,3,5,7)

    修改陣列某元素:arr(1) = 18

  注意:陣列的長度不可改變,arr += 9(錯誤,陣列不可新增元素),在定義陣列時資料型別可以省略

 

  2.陣列的方法

    1)map(對映)  

object MapTest {
  def main(args: Array[String]): Unit = {
    val arr = Array[Int](1,3,5,7)

    val arr1 = arr.map(x => x*5)

    println(arr1.toBuffer)
  }
}

    注意:在Scala語言中,使用toBuffer來將堆地址轉換為其對應資料資訊。

    

    2)flatten(扁平化)

    命令列操作:val arr = Array("hello hunter henchou","hello reba henmei")

          arr.map(_.split(" "))       //res1: Array[Array[String]] = Array(Array(hello, hunter, henchou), Array(hello, reba, henmei))

          arr.map(_.split(" ")).flatten    //res2: Array[String] = Array(hello, hunter, henchou, hello, reba, henmei)

 

    3)flatMap(先做map對映,再做flatten扁平化)

     命令列操作:arr.flatMap(_.split(" "))    //res3: Array[String] = Array(hello, hunter, henchou, hello, reba, henmei)

 

    4)foreach(遍歷陣列)

     命令列操作:val arr = Array(2,4,6,8)

           arr.foreach(x => print(x))    //2468

 

    5)groupBy(分組)

     命令列操作:val arr = Array("hello hunter henchou","hello reba henmei")

          需求1:將arr分解成一個包含arr所有單詞的陣列,然後根據單詞進行分類

           arr.flatMap(_.split(" ")).groupBy(x => x)    

          //結果:res9: scala.collection.immutable.Map[String,Array[String]] = Map(reba -> Array(reba), henmei -> Array(henmei), hunter -> Array(hunter), henchou -> Array(henchou), hello -> Array(hello, hello))

          需求2:將arr進行單詞計數wordcount

           arr.flatMap(_.split(" ")).groupBy(x => x).map(x => (x._1,x._2.length))

          //結果:res12: scala.collection.immutable.Map[String,Int] = Map(reba -> 1, henmei -> 1, hunter -> 1, henchou -> 1, hello -> 2)

    6)sortBy(排序)

     命令列操作:val arr = Array("hello hunter henchou","hello reba henmei")

      需求:將arr進行單詞計數並按照降序排序:

        arr.flatMap(_.split(" ")).groupBy(x => x).map(x => (x._1,x._2.length)).toList.sortBy(x => x._2)

        //結果:res16: List[(String, Int)] = List((reba,1), (henmei,1), (hunter,1), (henchou,1), (hello,2))

      注意:arr陣列進行完groupBy後時Map集合,而Map集合不支援sortBy方法,必須將其用toLis或toArrayt轉為List集合或Array陣列再進行排序。

 

二、集合

  1.集合的分類:1)可變集合(mutable)

         2)不可變集合(Immutable)

  2.集合的定義:

    1)定義不可變集合:val s = List(1,3,5)

      不可變集合元素不可修改,長度也不能改變(即不能新增元素)

     

    可以通過命令"scala.collection.immutable."檢視所有不可變集合

 

    2)定義可變集合:定義可變集合前必須匯入可變集合的包

      import scala.collection.mutable._

      val s = ArrayBuffer(2,4,6)

      可變集合可以修改集合元素,也可以新增元素

    

    可以通過命令”scala.collection.mutable.“檢視所有可變集合