Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。
Scala中,有可变Map(scala.collection.mutable.Map)和不可变Map(scala.collection.immutable.Map)。
Scala中的不可变Map是有序的。

1.构造不可变映射

默认Map是 immutable.Map,key-value 类型支持Any,在Map的底层,每对key-value是Tuple2,输出的结果中,输出顺序和声明顺序一致

scala> val map1 = Map("Alice" -> 19, "Tom" -> 20, "Jack" -> 21)
map1: scala.collection.immutable.Map[String,Int] = Map(Alice -> 19, Tom -> 20, Jack -> 21)scala> print(map1)
Map(Alice -> 19, Tom -> 20, Jack -> 21)

2.构造可变映射

scala> val map2 = scala.collection.mutable.Map("Alice" -> 19, "Tom" -> 20, "Jack" -> 21)
map2: scala.collection.mutable.Map[String,Int] = HashMap(Tom -> 20, Jack -> 21, Alice -> 19)scala> print(map2)
HashMap(Tom -> 20, Jack -> 21, Alice -> 19)

3.创建空的映射

new出来的

scala> val map3 = new scala.collection.mutable.HashMap[String, Int]
map3: scala.collection.mutable.HashMap[String,Int] = HashMap()scala> println(map3)
HashMap()

4.创建对偶元组

对偶元组就是只含有两个数据的元组,即创建包含键值对的二元组。

val map4 = scala.collection.mutable.Map(("Alice" , 19), ("Tom" , 20), ("Jack" , 21))
println("map4=" + map4)

5.map(key)

scala> val map4 = scala.collection.mutable.Map((“Alice” , 19), (“Tom” , 20), (“Jack” , 21))
map4: scala.collection.mutable.Map[String,Int] = HashMap(Tom -> 20, Jack -> 21, Alice -> 19)

scala> map4(“Tom”)
res20: Int = 20

scala> map4(“KK”)
java.util.NoSuchElementException: key not found: KK
at scala.collection.MapOps.default(Map.scala:246)
at scala.collection.MapOps.default$(Map.scala:245)
at scala.collection.AbstractMap.default(Map.scala:376)
at scala.collection.mutable.HashMap.apply(HashMap.scala:405)
… 28 elided

6.contains方法检查是否存在key

scala> map4.containsdef contains(key: String): Booleanscala> map4.contains("Tom")
res26: Boolean = true

7.map.get(key).get取值

scala> map4.getdef get(key: String): Option[Int]scala> map4.get("Tom").get
res31: Int = 20

8.map.getOrElse()

如果key存在,返回key对应的值。如果key不存在,返回默认值。在Java中底层有很多类似的操作。

scala> map4.getOrElsedef getOrElse[V1 >: Int](key: String, default: => V1): V1scala> map4.getOrElse("Tom","error")
res45: Any = 20scala> map4.getOrElse("Tom1","error")
res46: Any = error

9.更新map的元素

scala> map4("Tom")=12scala> map4("Tom")
res49: Int = 12scala> var map5=Map("blueicex"->33,"gege"->44,"liuzexuan"->9)
map5: scala.collection.immutable.Map[String,Int] = Map(blueicex -> 33, gege -> 44, liuzexuan -> 9)scala> map5("gege")=33^error: value update is not a member of scala.collection.immutable.Map[String,Int]did you mean updated?

10. 添加&删除 map元素

scala> import scala.collection.mutable
import scala.collection.mutable

scala> var map6=mutable.Map(“blueicex”->33,“gege”->44,“liuzexuan”->9)
map6: scala.collection.mutable.Map[String,Int] = HashMap(blueicex -> 33, gege -> 44, liuzexuan -> 9)

scala> map6+=(“girl1”->21)
res53: scala.collection.mutable.Map[String,Int] = HashMap(girl1 -> 21, blueicex -> 33, gege -> 44, liuzexuan -> 9)

scala> map6+=(“girl2”->21,“girl3”->20)
^
warning: method += in trait Growable is deprecated (since 2.13.0): Use ++= (addAll) instead of varargs +=
res54: scala.collection.mutable.Map[String,Int] = HashMap(liuzexuan -> 9, girl1 -> 21, girl2 -> 21, girl3 -> 20, blueicex -> 33, gege -> 44)

scala> map6++= Map((“girl5”,23),(“girl6”,24))
res75: scala.collection.mutable.Map[String,Int] = HashMap(girl5 -> 23, girl6 -> 24, liuzexuan -> 9, girl1 -> 21, girl2 -> 21, girl3 -> 20, blueicex -> 33, gege -> 44)

11.遍历map

scala> var map6=scala.collection.mutable.Map("girl5" -> 23, "girl6" -> 24, "liuzexuan" -> 9 )
map6: scala.collection.mutable.Map[String,Int] = HashMap(girl5 -> 23, girl6 -> 24, liuzexuan -> 9)scala> var map6=scala.collection.mutable.HashMap( "girl5" -> 23, "girl6" -> 24, "liuzexuan" -> 9 )
map6: scala.collection.mutable.HashMap[String,Int] = HashMap(girl5 -> 23, girl6 -> 24, liuzexuan -> 9)scala>  for((k,v)<-map6)|  println(k+"->"+v)
girl5->23
girl6->24
liuzexuan->9scala>  for(value<-map6)| println(value)
(girl5,23)
(girl6,24)
(liuzexuan,9)scala>  for(k<-map6.keySet)| println(k)
girl5
girl6
liuzexuanscala>  for(value<-map6.values)| println(value)
23
24
9

————Blueicex 2020/2/16 19:00 blueice1980@126.com

Scala—— 18.映射Map相关推荐

  1. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map

    目录 映射 | map 用法 案例一 案例二 映射  map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...

  2. scala的多种集合的使用(6)之映射Map的操作方法

    1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...

  3. 元组Tuple、数组Array、映射Map

    一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" ...

  4. Go开发 之 容器(数组Array、切片slice、映射map、列表list)

    文章目录 0.唠唠叨叨 1.数组-Array 1.1.什么是数组 1.1.1.数组的声明 1.1.2.比较两个数组是否相等 1.1.3.示例 1.1.3.1.通过索引下标访问元素 1.1.3.2.数组 ...

  5. Scala中的Map使用例子

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

  6. scala学习笔记-Map与Tuple(10)

    创建Map 1 // 创建一个不可变的Map2 val ages = Map("Leo" -> 30, "Jen" -> 25, "Jac ...

  7. js中数据结构数组Array、映射Map、集合Set、对象、JSON

    全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js中数据结构 js中原生自带的数据结构比较简单,主要有数组Array.映射Map.集合Set.我们可以根据这三个基本数据结构实 ...

  8. oeasy教您玩转vim - 76 - # 组合键映射map

    会话session 回忆组合键映射的细节 上次我们定义了一系列的复合键 主要是和ctrl键一起 快速跳转window窗口 map <c-j> <c-w>j map <c- ...

  9. Java中的映射Map - 入门篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的映射Map - 入门篇>,希望对大家有帮助,谢谢 简介 前面介绍了集合List,这里开始简单介绍下映射Map,相关类如下图所示 正 ...

最新文章

  1. Java map 知识
  2. 年薪不到 25.2 万免费学,廖雪峰的“大数据高级开发”课程第5期开始招生
  3. 算法-------寻找旋转排序数组中的最小值
  4. linux期末作业设计,linux作业与项目设计
  5. OpenStack Heat服务介绍 (三)
  6. java communiframe_[Java教程]javascript iframe相关操作
  7. 接到老大的任务,要求开发内部进销存系统
  8. 3.5k欧/m,HIIT 博士后招募,共48个项目可选
  9. Datasheet,你会读么?[转]
  10. 吴恩达机器学习学习笔记第一章:绪论初识机器学习
  11. 避免将属性的可见属性层次结构用作用户定义的层次结构中的级别
  12. SpringBoot整合MybatisPlus
  13. Moment.js 文档
  14. Springcloud笔记超级详细
  15. 构造Linux的图形化安装程序(4)(转)
  16. Linux挂载与软连接
  17. 光纤连接器的连接方法
  18. 【StringBuffer】
  19. mysql 中文截断_Mysql入库汉字被截断问题
  20. Arduino控制PCF8574

热门文章

  1. java 调试sql server_sql server 如何调试存储过程
  2. 一个有趣的字符滚动GIF动态验证码识别
  3. nginx 搭建静态网站
  4. 鸿蒙系统开始测试了,华为开始测试鸿蒙系统,百万台华为手机正在测试中,网友:厉害了...
  5. python 解析域名
  6. 发布本人整理的面试问题大全,为准备找工作的同行们尽一份力!希望大家多补充或回答!
  7. 华为核心交换机HW_S7706添加静态路由
  8. 新南威尔士大学纯硅量子计算机,新南威尔士大学工程科学硕士-电气工程小方向课程解析...
  9. 文档印刷体中字符类符号
  10. OpenMW版本,Zotac蒸汽机评论以及更多开放式游戏新闻