Map

构造Map

不可变:

val map = Map("sa" -> 1, "s" -> 2)
map("sa") = 3 // error

val emptyMap = new scala.collection.immutable.HashMap[String, Int]

可变:

val map2 = scala.collection.mutable.Map("sa" -> 2)
map2("sa") = 3

val emptyMap = new scala.collection.mutable.HashMap[String, Int]

注:->用来创建元组, "sa" -> 1即("sa", 1)

初始化完全可以 val map = Map(("sa", 1), ("s", 2))

获取Map中的值:

如果map中不包含请求中使用的key值,则抛异常。NoSuchElementException

  map("sa") // 类似于java中的map.get("sa")

要检查map中是否包含某个key,使用contains方法。

  val sa = if (map2.contains("sa3")) map2("sa3") else 0;

快捷的方式:

  val sa2 = map.getOrElse("sa2", 0)

一次得到是否包含key,并获取值:

  val sa3 = map.get("sa3"); // Option类型,
  println(sa3.isEmpty)

更新Map中的值:

添加或更新:

  map("sa") = 3

添加或更新多个:

  map += ("aa" -> 4, "bb" -> 5)

移除某个key和对应的值:

  map -= "aa"

不可变的map也可以使用+和-操作,但是会生成新的map

  var map = Map("aa" -> 1)

  map = map + ("bb" -> 2)

  map += ("cc" -> 2)

  map -= "aa"

迭代map:

for ((k, v) <- map) {

  // TODO

}

所有key:

  map.keySet

所有值:

  map.values

反转:

  map2 = for((k, v) <- map) yield (v, k)

已排序Map:

按key排序:

  SortedMap

按添加顺序:

  LinkedHashMap

Map与Java互操作:

Java Properties转为scala.collection.Map:

  import scala.collection.JavaConversions.propertiesAsScalaMap
  val prop: scala.collection.Map[String, String] = System.getProperties();

Java Map转为scala.collection.mutable.Map[String, Int]:

  import scala.collection.JavaConversions.mapAsScalaMap
  val map: scala.collection.mutable.Map[String, Int] = new TreeMap[String, Int]

Scala Map转为Java Map:

  import scala.collection.JavaConversions.mapAsJavaMap
  import java.awt.font.TextAttribute._
  var fs = Map(FAMILY -> "Serif", SIZE -> 12)
  var fonts = new Font(fs)

scala - Map基础的更多相关文章

  1. Scala 语法基础

    一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...

  2. Scala语言基础

    1. Scala语言的特点 a. 多范式编程语言,面向对象(抽象.封装)和函数式(过程.结果)编程 b. 代码简洁 ==>可读性较差 c. 代码会被变异成Java字节码,运行在JVM上 2. S ...

  3. Scala零基础教学【1-20】

    基于王家林老师的Spark教程——共计111讲的<Scala零基础教学> 计划在9月24日内完成(中秋节假期之内) 目前18号初步学习到25讲,平均每天大约完成15讲,望各位监督. 初步计 ...

  4. Scala(一) —— 基础

    一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateT ...

  5. Scala编程基础

    Scala与Java的关系... 4 安装Scala. 4 Scala解释器的使用... 4 声明变量... 5 数据类型与操作符... 5 函数调用与apply()函数... 5 if表达式... ...

  6. Scala学习——基础篇

    [<快学Scala>笔记] 一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达 ...

  7. Scala map与flatMap

    1. map函数   对集合的每一个元素运用某个函数操作,然后将结果作为一个新的列表返回. 实例1:将列表中每个元素值乘以2 scala> val list1=List(1,2,3,4) lis ...

  8. Spark记录-Scala语法基础

    参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...

  9. scala map操作 简单总结

    在函数式编程中有一个核心的概念之一是转换,所以大部份支持函数式编程语言,都支持一种叫map()的动作,这个动作是可以帮你把某个容器的内容,套上一些动作之后,变成另一个新的容器. 现在我们考虑如何用Op ...

随机推荐

  1. 聊聊传统oo和js的某些对比——对象/函数/new关键字等

    自己的学习记录,写的短点可以以后短时间内理清一些疑惑,看前要求你至少了解js中关于原型链等基本概念,因为文章直接以总结的形式理出知识点,没有去解释一些基本的概念! 1.1.熟记两句话,预预热 1. 函 ...

  2. ObCallback回调钩子检测

    ObCallback回调钩子检测 2013-12-20 Nie.Meining Ring0 在 PatchGuard 的摧残下,通过 ObRegisterCallbacks 函数注册回调钩子已经成了 ...

  3. 学习linux内核时常碰到的汇编指令(1)

     转载:http://blog.sina.com.cn/s/blog_4be6adec01007xvg.html 80X86 汇编指令符号大全 +.-.*./∶算术运算符. &∶宏处理操作符. ...

  4. Linux学习笔记(6)Linux常用命令之帮助命令与用户管理命令

    (1)man man命令用于获得命令或配置文件的帮助信息,英文原意为manual,所在路径为/usr/bin/man,其语法格式为: man [命令或配置文件] 注意:查看配置文件的帮助信息时无需绝对 ...

  5. 【Web前端】---js调用本地应用程序

    最近进入了一个项目组,向大牛们一起学习如何搞开发,可谓是边开发边学习.就在前两天,我们的项目被领导们验收了一次,顺便给我们提了点新的需求,要求我们能够使用外在设备拍照上传.君要臣死,臣不能不死.更何况 ...

  6. Jmeter 小攻略(转)

    http://www.myexception.cn/open-source/1346307.html

  7. Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)

    来自 Confluent 的 Confluent Platform 3.0 消息系统支持使用 Kafka Streams 实现实时的数据处理,这家公司也是在背后支撑 Apache Kafka 消息框架 ...

  8. BroadCast,BroadCastReceiver

    效果是:一个MainActivity动态注册一个BroadcastReceiver,BActivity发送一个标准广播,MainActivity接收到广播后,将广播中的消息显示在MainActivit ...

  9. An easy problem

    An easy problem Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

  10. TweenMax_API介绍

    构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number ...