第八课:零基础实战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的重大作用
转载于:https://my.oschina.net/u/1449867/blog/725350