第八课:零基础实战Scala最常用数据结构Map和Tuple

Map为什么很重要?

如果我们有海量的数据,基于Map检索会非常快!!!但是如果在array中会很慢,尤其是修改的时候

而Tuple可以是不同类型的对象放在同一个数据结构中

 

无论是Map还是Tuple,都是Scala或者Spark最常用的数据结构

 

package com.dt.spark.scala.basics

 

 

object HelloMapTuple {

 

  def main(args:Array[String]){

    /**

     * 调用工厂方法来构造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的重大作用

第八课:零基础实战Scala最常用数据结构Map和Tuple

转载于:https://my.oschina.net/u/1449867/blog/725350