第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

本节课实战代码:

蘑菇云Spark&Scala详解搜狐视频地址: http://my.tv.sohu.com/us/146052161/84680363.shtml

import scala.collection.mutable.HashMap

object HelloMapTupleOps {
  def main(args: Array[String]): Unit = {

//1、默认情况下,Map构建的是不可变的集合,Map构建调用的是工厂方法模式apply,调用的是Map接口,在apply中使用了具体的实现
//2、如果想直接new出Map实例,则需要使用HashMap等具体的Map子类;
//3、查询一个Map中的值一定是采用getOrElse的语法,一方面是key不存在的情况下不会报异常,另一个就可以提供默认值,在Spark中很多默认的配置都是通过getOrElse的方法来实现的;
    
    val map = Map(1 -> "Spark", 2 -> "Hadoop")

    //定义可变的Map
    val map2 = scala.collection.mutable.Map(13 -> "Scala", 6 -> "Spark")
    for ((key, value) <- map2) {
      println(key + ":" + value)
    }
    //检索Map中的值方式getOrElse,提供默认值,不会报异常
    println(map2.getOrElse(3, "Flink"))
    map2 += (3 -> "Flink") //添加元素
    map2 -= (2) //删除元素
    //读取Map中的key值列表
    for (key <- map2.keySet) println(key)
    //读取Map中的value值列表
    for (value <- map2.values) println(value)
    //定义排序的Map,字母按ASCII进行排序
    val map3 = scala.collection.immutable.SortedMap(3 -> "Spark", 2 -> "Hadoop")
    for ((key, value) <- map3) println(key + ":" + value)
    //定义LinkedHashMap,记录插入的顺序
    val map4 = new scala.collection.mutable.LinkedHashMap[String, Int]
    map4 += ("Spark" -> 6, "Hadoop" -> 10, "Flink" -> 3)
    for ((key, value) <- map4) {
      println(key + ":" + value)
    }
    //HashMap可以定义空的结构
    val hashMap = HashMap[String, Int]()

    /**
     * Tuple定义
     */
    val tupe1 = ("Spark", 6)
    println(tupe1._1 + ":" + tupe1._2)
    //Tuple可以作为函数的返回值
    val (name, age) = fun4

  }
  
  def fun4: (String, Int) = {
    val tuple2 = ("Spark", 4)
    tuple2
  }


备注:

资料来源于:DT_大数据梦工厂(Spark"蘑菇云"行动

更多私密内容,请关注微信公众号:DT_Spark

如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上2000开设的Spark永久免费公开课,地址YY房间号:68917580


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值