scala - Map基础
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基础的更多相关文章
- Scala 语法基础
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...
- Scala语言基础
1. Scala语言的特点 a. 多范式编程语言,面向对象(抽象.封装)和函数式(过程.结果)编程 b. 代码简洁 ==>可读性较差 c. 代码会被变异成Java字节码,运行在JVM上 2. S ...
- Scala零基础教学【1-20】
基于王家林老师的Spark教程——共计111讲的<Scala零基础教学> 计划在9月24日内完成(中秋节假期之内) 目前18号初步学习到25讲,平均每天大约完成15讲,望各位监督. 初步计 ...
- Scala(一) —— 基础
一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateT ...
- Scala编程基础
Scala与Java的关系... 4 安装Scala. 4 Scala解释器的使用... 4 声明变量... 5 数据类型与操作符... 5 函数调用与apply()函数... 5 if表达式... ...
- Scala学习——基础篇
[<快学Scala>笔记] 一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达 ...
- Scala map与flatMap
1. map函数 对集合的每一个元素运用某个函数操作,然后将结果作为一个新的列表返回. 实例1:将列表中每个元素值乘以2 scala> val list1=List(1,2,3,4) lis ...
- Spark记录-Scala语法基础
参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...
- scala map操作 简单总结
在函数式编程中有一个核心的概念之一是转换,所以大部份支持函数式编程语言,都支持一种叫map()的动作,这个动作是可以帮你把某个容器的内容,套上一些动作之后,变成另一个新的容器. 现在我们考虑如何用Op ...
随机推荐
- 比较两个文件文件可以使用MD5比较工具
举例来说,当我们对一个设备进行升级. 固件程序是一个文件,而我们发送的数据可以组成一个文档, 实质是把这两个文件拖入到下图中的工具中,查看一下MD5值.SHA1值.CRC32的值,如果值都一样说明这两 ...
- java学习笔记(2):获取文件名和自定义文件过滤器
//自定义文件过滤器import java.io.File; import javax.swing.filechooser.*; public class JavaChooser extends Fi ...
- 智能车学习(十)——MMA8451加速度计的使用
一.驱动说明: 就是使用I2C的通信方式驱动这款加速度计就行了,代码的话选择使用51单片机的代码进行移植. 二.代码分享: 1.头文件: #ifndef MMA8451_H #define MMA84 ...
- Linux3.18.6内核添加系统调用(32位系统)
1.将已经下载好的内核解压,我的目录是 /home/shangsongchao/LinuxKernel/testlinux-3.18.6/linux-3.18.6 2.添加系统调用表: 在/home/ ...
- 大端模式 VS 小端模式
简单点说,就是字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了.注意字节序是硬件层面的东西,对于软件来说通常是透明的.再说 ...
- 【JavaScript基础学习】关于正则表达式的完整内容
w3cJavaScript RegExp对象 这个如果第一次看的话应该会很莫名其妙,但可以看一遍留个印象. 正则表达式30分钟入门教程 这个教程非常完整,走一遍大概能够明白怎么回事了. 正则表达式在 ...
- WPF,解决Listbox,按住ListboxItem向下拖出Listbox,横向滚动条跑到最后。
类似这种样式的控件,.,在横向滚动条隐藏的情况下有这样的问题.(横向滚动条显示的时候也会,,目前不知道怎么解决.) 因为这个控件偏移是利用ListBox的ItemsPanelTemplate模版里的S ...
- 指针与const
指向常量的指针,不能用于改变其所指对象的值. 指针的类型必须与所指对象的类型一致,但是有两个例外,第一种是允许令一个指向常量的指针指向一个非常量对象: double dra1 = 3.14; cons ...
- 在WPF下快速生成线的方法
如果线较多时,在画布中用Path或Line生成时会比较慢.用DrawingVisual可以快速生成,这个在之前我的博客中已经提到.但在类库形式下生成的无法看到,保存成Image后再加入图层后成功显示. ...
- NUC_HomeWork1 -- POJ2067(最短路)
C - Fire Station Description A city is served by a number of fire stations. Some residents have comp ...