第八课:零基础实战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的重大做用

相关文章
相关标签/搜索