第八課:零基礎實戰Scala最經常使用數據結構Map和Tuple

Map爲何很重要?python

若是咱們有海量的數據,基於Map檢索會很是快!!!可是若是在array中會很慢,尤爲是修改的時候數據結構

而Tuple能夠是不一樣類型的對象放在同一個數據結構中app

 

不管是Map仍是Tuple,都是Scala或者Spark最經常使用的數據結構函數

 

package com.dt.spark.scala.basicsoop

 

 

object HelloMapTuple {this

 

  def main(args:Array[String]){spa

    /**scala

     * 調用工廠方法來構造Map實例,而Map是接口!!apply中使用了具體的實現對象

     * 1.默認狀況下,Map構造的是不可變集合,裏面的內容不可修改,一旦修改變成新的Map,原有Map的內容保持不變排序

     * 2.Map的實例是調用apply方法去構建的

     * 3.若是想new出Map實例,就必須使用HashMap等子類

     */

    val bigDatas=Map("Spark" -> 6,"Hadoop" -> 11)

    val persons=Map(("Spark",6),("Hadoop",11))

   

    val programLanguage=scala.collection.mutable.Map("Scala"->13,"Java"->23)

    programLanguage("Scala")=15

    /**

     * 4.檢索一個Map中的值,必定是採用getOrElse方法,一方面在key不存在的時候不報異常

     * 另一方面就是能夠提供默認值,而關於默認值的提供在實際開發中相當重要

     * 在Spark中不少默認的配置就是經過getOrElse來實現的

     */

   println(programLanguage.getOrElse("Python", -1))

   

    for((name,age) <- programLanguage) println(name+":"+age)

   

    val personInfos=new scala.collection.mutable.HashMap[String,Int]()

    personInfos += ("Scala"->13,"Java"->23)

    personInfos -= "Java"

   

    for((name,age) <- personInfos) println(name+":"+age)

   

    for(key <- personInfos.keySet) println(key)

   

    for(value <- personInfos.values) println(value)

   

    val resultMap=for((name,age) <- personInfos) yield (age,name)

   

    for((age,name) <- resultMap) println(age+":"+name)

   

    /**

     * 5.使用SortedMap能夠獲得排序的Map集合

     */

    val sortedMap=scala.collection.immutable.SortedMap("DTSpark"->45,"b"->23)

    for((name,age) <- sortedMap) println(name+":"+age)

   

    /**

     * 6.LinkedHashMap能夠記住插入的數據的順序,這在實際開發中很是有用

     */

    val linkedHashMap=scala.collection.mutable.LinkedHashMap[String,Int]()

    linkedHashMap += "Scala" -> 13

    linkedHashMap += "Java" -> 27

    linkedHashMap += "python" -> 10

    for((name,age) <- linkedHashMap) println(name+":"+age)

   

    /**

     * 1.Tuple中能夠有不少類型的數據

     * 2.在企業級實際開發中,必定會反覆使用Tuple去處理業務邏輯

     * 3.Tuple的另一個很重大的做用就是做爲函數的返回值,在Tuple中能夠返回若干個值,例如:

     *  val (sched, ts) = SparkContext.createTaskScheduler(this, master)

    _schedulerBackend = sched

    _taskScheduler = ts

     */

    val t=("john","male",30,"love spark")

    println(t._1)

 

  }

 

}

 

概括總結:1.Map的好處和Tuple的好處

2.看一下Map的構造,理解以前所講的內容

3.關於可變Map和不可變Map

4.檢索一個Map中的值,應該採用的方法

5.SortedMap和LinkedHashMap

6.Tuple的重大做用

相關文章
相關標籤/搜索