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 ...
随机推荐
- keil中编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW
解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNw ...
- IPhone 设备状态、闪光灯状态
//判断闪光灯状态,修改默认的"CameraFlashOff" 按钮图片.转由 TGCameraFlash.m 控制图标切换 AVCaptureDevice *device ...
- [ASP.NET MVC] Child actions are not allowed to perform redirect
我在Umbraco平台下,用MVC(SurfaceController)开发时,遇到这个问题 MemberEdit是一个partial View [HttpGet] [ActionName(" ...
- Java日期处理类
1.Date java.util.Date 2.Calendar 日历类,通过getInstance()获取实例对象,可以获取年月日时分秒 3.SimpleDateFormat 日期格式化,forma ...
- Http通讯协议在.net下的实现方法
1.HttpwebRequest and HttpWebResponse 2.客户端访问服务端的API:HttpClient 3. .net下的Remoting 4.Web Services 5.W ...
- django控制admin的model显示列表
class goods(models.Model): name = models.CharField(max_length=300) price = models.IntegerField ...
- Django搭建博客后台
转载自:http://sanwen8.cn/p/1cboypN.html 首先创建项目和blog应用: 在cmd命令行下,输入: django-admin.py startproject myblog ...
- github 坑爹的仓库初始化设置
一段时间没有使用 github,奇妙地发现自己连仓库都不会建了,汗一个... 话说上次我在 github 上面建了一个仓库,在创建仓库的设置表单中勾上了自动生成 README.md 选项, ok,创建 ...
- POI Excel导出样式设置
HSSFSheet sheet = workbook.createSheet("sheetName"); //创建sheet sheet.setVerticallyCente ...
- Codeforces Round #115 B. Plane of Tanks: Pro 水题
B. Plane of Tanks: Pro Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/17 ...