Scala中的Map
映射
映射是对偶的集合。
声明映射

映射是对偶的集合。
a.声明映射

b.映射中的键值对称作对偶,用( , )表示

c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者getOrElse方法

默认使用的映射中的value是不可修改的,位于scala.collection.immutable包中。如果要修改,必须使用位于scala.collection.mutable包中的Map类型

如果要迭代每一个对偶,还是使用for循环

看代码:
object TestScalaMap {
def main(args: Array[String]): Unit = {
//定义Map
var map1 = Map[String,Int]("zhangsan" -> 15000,"lisi"->16000,"wangwu"->9000 )
//定义Map可以用这种混合的方式
var map2 = Map[String,Int](("zhangsan",15000),("lisi"->16000),"wangwu"->9000)
for(i <- map2){
println(i)
}
/*
* 输出结果:
* (zhangsan,15000)
* (lisi,16000)
* (wangwu,9000)
*/
//增强代码的健壮性
if(map1.contains("zhaoliu"))
println(map1("zhaoliu"))//没有if判断的话就会抛出异常
//scala写法
println(map1.getOrElse("zhaoliu","没有zhaoliu"))//输出:没有zhaoliu
for(i <- map2.keys){//.keys 取出map对应的key的集合
println(map2(i))
}
/*
* 输出
* 15000
* 16000
* 9000
*/
//循环遍历map
for((k,v) <- map2){
println(k + "-->" + v)
}
/*
* 输出:
* zhangsan-->15000
* lisi-->16000
* wangwu-->9000
*/
//k,v互换 还是要通过使用操作集合生成集合的yield
var map3 = for((k,v) <- map2)yield((v,k))
println(map3) //输出:Map(15000 -> zhangsan, 16000 -> lisi, 9000 -> wangwu)
//更改map中键的值
map1 += ("zhangsan"->16000)
println(map1)//输出: Map(zhangsan -> 16000, lisi -> 16000, wangwu -> 9000)
//声明一个可变的Map mutable "可变的" immutable "不可变的"
var map4 = scala.collection.mutable.Map[String,Int]("zhangsanfeng" ->15000,"zhangwuji" -> 6000)
map4("zhangsanfeng") = 19000
println(map4)//输出 Map(zhangsanfeng -> 19000, zhangwuji -> 6000)
map4 -= ("zhangsanfeng")
println(map4)//输出 Map(zhangwuji -> 6000)
map4.remove("zhangsanfeng")
println(map4)
//map4 ++= map3 //可以用"++="向map中追加另外一个map中的值
//但是此处会报错,因为map4是[String,Int] 而map3是[Int,String]
}
}
Scala中的Map的更多相关文章
- Scala中的Map使用例子
Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法. (1)不可变Map特点: api不太丰富 如果是 ...
- Scala中的Map集合
1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...
- scala中获取Map中key和value的方法
val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8) // 获取所有的key v ...
- scala中Map和Set
scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质. 可变set import scala.collection.mutable.Se ...
- Scala 中的foreach和map方法比较
Scala中的集合对象都有foreach和map两个方法.两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法.而两者的差异在于:foreach无返回值(准确说返回void),map返 ...
- (转)scala中map与flatMap浅析
在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...
- scala中Map集合的简单使用
import scala.collection.mutable /** * Map集合的简单使用 */ object MapUse { def main(args: Array[String]): U ...
- Scala中apply的用法
Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every fun ...
- 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用
今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...
随机推荐
- 你想成为优秀的Java程序员吗?
Java是全世界最受欢迎的3大编程语言之一,它可以开发出许多实用的WEB应用程序和桌面应用程序,更重要的一点,Java是跨平台的语言——编写一次,可以再任何地方运行.另外,Java也很容易入门,如果你 ...
- 第二百四十二天 how can I 坚持
今天... 貌似没啥啊. 第一天带帽子上班. 还有回来买了两个柚子吃了,有点上火啊. 还有今天雾霾爆表啊,pm2.5 600多啊. 还有看了部电影<蚁人>,挺好看.希望不会出二.三.四. ...
- LNMP最新源码安装脚本(定期更新)
Linux+Nginx+MySQL+PHP+Pureftpd+User manager for PureFTPd,脚本中用到的软件包大多最新版本,修复了User manager for PureFTP ...
- linux下开发c第一弹--相关环境需求
我用的是mac,mac和linux一般集成了一定的开发环境,基本上需要gcc.vim.gdb之类的,linux下需要apt-get,mac下homebrew的brew install都可以解决问题.同 ...
- HDU 1068 Girls and Boys (二分图最大独立集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068 有n个同学,格式ni:(m) n1 n2 n3表示同学ni有缘与n1,n2,n3成为情侣,求集合 ...
- 认识JavaScript的原型
本来打算也写一个JavaScript学习笔记的系列,不过由于笔者不太想买大部头的js数据,和网上的资料也不少,所以js系列就打算写到了算了了. 要理解JavaScript就要理解其原型,首先我们先区分 ...
- MVC神韵---你想在哪解脱!(十八)
数据的修改视图 首先打开Movie控制器,添加一个返回数据修改视图的Edit()方法与一个对该视图中的表单提交进行处理的Edit()方法,代码如下所示: // GET: /Movies/Edit pu ...
- 如何将std::string转int,double? (C/C++) (C) (template)
http://www.cnblogs.com/oomusou/archive/2008/08/01/525647.html http://blog.sina.com.cn/s/blog_a843a88 ...
- python字符串相关的函数
有些是字符串对象的方法,有些是内建库的方法 split分割字符串 find 查找字符串 for c in str: 遍历字符串 len 获取字符串长度 int 将字符串转换成int str ...
- 怎么删除windows中无用的服务
搜索cmd->以管理员身份打开 输入sc delete 服务名 回车即可