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 ...
随机推荐
- CSS选择器的特殊性
在我们为元素添加样式的时候,或多或少会出现一个元素会有几个不同规则的样式.有#id的,有.class,直接标签元素的,还有各种组合起来的选择器.那CSS到底如何解决这些冲突呢,我们这次专门来探讨一下. ...
- MYSQL数据库性能调优之一:调优技术基础
1.mysql数据库优化技术有哪些? 2.数据库三层结构? 3.数据库3NF
- 启动程序的同时传参给接收程序(XE8+WIN764)
相关资料: http://blog.csdn.net/yanjiaye520/article/details/7590252 注意事项: 1.ParamStr(0)是实例自己. 2.传的参数是以空格分 ...
- UVALive 7324 ASCII Addition (模拟)
ASCII Addition 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/A Description Nowadays, th ...
- POJ 1789 Truck History (最小生成树)
Truck History 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/E Description Advanced Carg ...
- Linux 系统监控和诊断工具:lsof
1.lsof 简介 lsof 是 Linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~ 它可以用来列出被 ...
- linux下登陆用户的行为信息—w和who命令详解
查看用户的操作系统管理员若想知道某一时刻用户的行为,只需要输入命令w 即可,在SHELL终端中输入如下命令: [root@localhost ~]# w 可以看到执行w命令及显示结果. 命令信息含义上 ...
- C# 索引器 学习
转载原地址: http://www.cnblogs.com/lxblog/p/3940261.html 1.索引器(Indexer): 索引器允许类或者结构的实例按照与数组相同的方式进行索引.索引器类 ...
- UVaLive 6859 Points (几何,凸包)
题意:给定 n 个点,让你用最长的周长把它们严格包围起来,边长只能用小格子边长或者是小格子对角线. 析:先把每个点的上下左右都放到一个集合中,然后求出一个凸包,然后先边长转成题目的方式,也好转两个点的 ...
- FluentData微型ORM
最近在帮朋友做一个简单管理系统,因为笔者够懒,但是使用过的NHibernate用来做这中项目又太不实际了,索性百度了微型ORM,FluentData是第一个跳入我眼睛的词.简单的了解下FluentDa ...