映射

映射是对偶的集合。

声明映射

映射是对偶的集合。

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的更多相关文章

  1. Scala中的Map使用例子

    Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法. (1)不可变Map特点: api不太丰富 如果是 ...

  2. Scala中的Map集合

    1. Map集合 1.1 Scala中的Map介绍 Scala中的Map 和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的M ...

  3. scala中获取Map中key和value的方法

    val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8) // 获取所有的key v ...

  4. scala中Map和Set

    scala中Set包含可变set和不可变Set,set的子类HashSet,各有一个扩展了可变和不可变的set特质.  可变set import scala.collection.mutable.Se ...

  5. Scala 中的foreach和map方法比较

    Scala中的集合对象都有foreach和map两个方法.两个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法.而两者的差异在于:foreach无返回值(准确说返回void),map返 ...

  6. (转)scala中map与flatMap浅析

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行组合.由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好 ...

  7. scala中Map集合的简单使用

    import scala.collection.mutable /** * Map集合的简单使用 */ object MapUse { def main(args: Array[String]): U ...

  8. Scala中apply的用法

    Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every fun ...

  9. 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

    今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.spl ...

随机推荐

  1. Red5实现直播

    http://pxchen.iteye.com/blog/714591 发布端(Publish): var nc:NetConnection = new NetConnection(); nc.con ...

  2. MSGPACK(一)

    MSGPACK跨平台的数据序列规范,为多种语言所支持.用它序列还是还原数据都异常方便. 而且它支持序列的数据格式非常之多,因为它支持的数据格式多,所以MSGPACK的第二功用:缓存. DELPHI的M ...

  3. AVCaptureDevice的几个属性

    AVCaptureDevice.h,主要用来获取iphone一些关于相机设备的属性. AVCaptureDevice.h,必须要引入AVFoundation.framework包. 1. 前置和后置摄 ...

  4. windows下实现微秒级的延时

    windowsintegeriostream汇编嵌入式任务 最近正在做一个嵌入式系统,是基于windows ce的,外接硬件的时序要微秒级的延时.1.微秒级的延时肯定不能基于消息(SetTimer函数 ...

  5. 基于EF的数据外键关联查询

    现在很多ORM不自带外键关联的实体查询,比如我查询用户,用时将关联的角色信息查询出来,那么就要进行2次查询,很麻烦.而我现在要做的就是基于EF的外键关联查询.很方便的. 首先,创建基础查询的BaseS ...

  6. 深入Mysql 导入导出

    mysql常用导出数据命令:1.mysql导出整个数据库  mysqldump -hhostname -uusername -ppassword databasename > backupfil ...

  7. Unix: How to Install BerkeleyDB From Source

    http://www.masaokitamura.com/2010/07/23/unix-how-to-install-berkeleydb-from-source/ This documentati ...

  8. DuiLib(一)——窗口及消息

    最近看了下开源界面库duilib的代码,写几篇相关的文章.网上已经有好多相关的文章了,我这里只是记录自己的学习过程,写到哪里算哪里,权当自娱自乐. duilib是一轻量级的direcui界面库,所谓d ...

  9. Covarience And ContraVariance

    using System; using System.Collections.Generic; using System.IO; namespace CovarientAndContraVarient ...

  10. POJ 1743 Musical Theme 后缀数组 最长重复不相交子串

    Musical ThemeTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=1743 Description ...