Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法。

(1)不可变Map

特点:

api不太丰富

如果是var修饰,引用可变,支持读写

如果是val修饰,引用不可变,只能写入一次值,其后只读

var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数

a += ("k3"->3)//添加元素

a += ("k4"->4)//添加元素

a += ("k1"->100)//已经存在添加元素会覆盖

a -= ("k2","k1")//删除元素

// a("k1") = "foo"//不支持

println(a.contains("k6"))//是否包含某元素

println(a.size)//打印大小

println(a.get("k1").getOrElse("default")) //根据key读取元素,不存在就替换成默认值

a.foreach{case (e,i) => println(e,i)} //遍历打印1

for( (k,v)

println(a.isEmpty)//判断是否为空

a.keys.foreach(println)//只打印key

a.values.foreach(println)//只打印value

a=Map()//数据清空使用再次new

println(a.size)

a.toSeq.sortBy(_._1)//升序排序 key

a.toSeq.sortBy(_._2)//升序排序 value

a.toSeq.sortWith(_._1>_._1) //降序排序 key

a.toSeq.sortWith(_._2>_._2) //降序排序 value

//下面自定义按英文字母或数字排序

implicit val KeyOrdering=new Ordering[String] {

override def compare(x: String, y: String): Int = {

x.compareTo(y)

}

}

println(a.toSeq.sorted)

(2)可变Map例子

特点:

api丰富与Java中Map基本类似

如果是var修饰,引用可变,支持读写

如果是val修饰,引用不可变,支持读写

def map3(): Unit ={

//不可变Map+var关键词修饰例子

var a:scala.collection.mutable.Map[String,Int]=scala.collection.mutable.Map("k1"->1,"k2"->2)//初始化构造函数

a += ("k3"->3)//添加元素

a += ("k4"->4)//添加元素

a += ("k1"->100)//已经存在添加元素会覆盖

a += ("k1"->100,"k9"->9)//添加多个元素

a -= ("k2","k1")//删除元素

a ++= List("CA" -> 23, "CO" -> 25)//追加集合

a --= List("AL", "AZ")//删除集合

a.retain((k,v)=> k=="k1")//只保留等于k1元素,其他的删除

a.put("put1",200)//put

a.remove("k2")//remove

a.clear()//清空

a("k3")=100//支持

println(a.contains("k6"))//是否包含某元素

println(a.size)//打印大小

println(a.get("k1").getOrElse("default")) //根据key读取元素,不存在就替换成默认值

a.foreach{case (e,i) => println(e,i)} //遍历打印1

for( (k,v)

println(a.isEmpty)//判断是否为空

a.keys.foreach(println)//只打印key

a.values.foreach(println)//只打印value

a=scala.collection.mutable.Map()//引用能变

println(a.size)

a.toSeq.sortBy(_._1)//排序 key

a.toSeq.sortBy(_._2)//排序 value

a.toSeq.sortWith(_._1>_._1) //降序排序 key

a.toSeq.sortWith(_._2>_._2) //降序排序 value

//下面自定义按英文字母或数字排序

implicit val KeyOrdering=new Ordering[String] {

override def compare(x: String, y: String): Int = {

x.compareTo(y)

}

}

println(a.toSeq.sorted)

map写法 scala语言_Scala中的Map使用例子相关推荐

  1. map写法 scala语言_(转)scala中map与flatMap浅析

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...

  2. Scala的集合类中的map方法和count 方法

    在Scala中,有很多很好用的东西,虽然不怎么会那个东西,但是觉得有时候这个语言的开发速度就是比JAVA的要快.废话不多说: 如下: // 我也不知道Case是干什么用的,但是有了Case,equal ...

  3. scala设计模式_Scala中的工厂设计模式

    scala设计模式 I'm going to deliver a series of Scala Design Patterns in my coming posts. I will pick-up ...

  4. python中的map什么意思啊_python中的map怎么使用(方法详解)

    python中的map怎么使用? python中map的使用方法: map函数的原型是map(function, iterable, -),它的返回结果是一个列表. 参数function传的是一个函数 ...

  5. java map迭代_在Java中对Map进行迭代

    #概述 本文,我们将了解一下在Java中迭代Map各种不同方法. 简单来说,我们可以使用keySet().valueSet()或entrySet()来提取Map的内容.因为这些都是Sets,所以类似的 ...

  6. 会java学scala多久_Scala中超时的未来

    虽然你已经得到了一些关于如何通过阻止额外线程来处理超时来实现它的答案,但我建议你尝试不同的方式,因为Rex Kerr已经给出了 . 我不知道你在_118509中做了什么,但如果它是I / O绑定的,我 ...

  7. oracle map order,oracle面向对象技术中的map和order方法有何不同?

    MAP方法MAP方法用于将对象实例映射为标量数值(NUMBER,DATE,VARCHAR2等):对于相同对象类型不同对象实例来说,因为他们的数据类型是复合数据类型,所以对象实例之间不能直接进行比较.为 ...

  8. python里的map是什么意思_python中的map是什么意思

    map()会根据提供的函数对指定序列做映射. 第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的新列表. map() 函数语法:map ...

  9. html中map标签的用法,HTML中的map和area标签

    1. 标签介绍: (1)map标签: 该标签是指图片的映射,也就是说一张可以点击的图片的映射: 属性介绍: <1> id: 中的 usemap 属性可引用 中的 id 或 name 属性( ...

最新文章

  1. Linux下源码安装CodeBlocks
  2. kepler架构GPU新特性--HyperQ
  3. 【POJ2387】Til the Cows Come Home (最短路)
  4. Vue006_事件处理
  5. 设计模式 创建型 工厂方法模式
  6. 视频教程-OCJP认证考试复习课-其他
  7. 数据治理管理平台——元数据与主数据管理
  8. JAVA项目一 家庭收支记账软件
  9. 解决外网下载速度过慢问题
  10. 见信如晤::‘卷福’读信:我全心全意去拥抱您
  11. 扁平化风格博客——后续
  12. 地理生物结业考_地理、生物结业主要考什么?
  13. HDR视频色调映射算法(之三:Block matching TMO)
  14. QChart数据可视化应用
  15. heic格式的图片h5显示
  16. 人工智能基础 | K近邻(三)
  17. java cms 开源系统_基于Java的开源CMS系统选择
  18. 利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21...
  19. 笔记:Sublime Text 3
  20. 零基础学习3D游戏建模

热门文章

  1. 【控制】《鲁棒控制-线性矩阵不等式处理方法》-俞立老师-目录
  2. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第11章-意图场模型干预下的人机共享控制
  3. Python class 类中 __init__ 函数
  4. 第一章 介绍-机器学习老师板书-斯坦福吴恩达教授
  5. 1.7 程序示例--多项式回归-机器学习笔记-斯坦福吴恩达教授
  6. STM32 进阶教程 12 - M4的硬件乘法器使用
  7. vivado-SOC-----Memory内存测试和DDR测试(初学者SDK hello world不通的有救了~)
  8. export_symbol的使用
  9. 【工具】24K纯吊丝超低成本低功耗电流测试方案,esp32实测功耗
  10. Spring实战(第3版)