目录

Map对象

不可变Map

可变Map

Map基本操作


Map对象

Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。

不可变Map

定义

语法

val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好
val/var map = Map((键, 值), (键, 值), (键, 值), (键, 值)...)

示例

定义一个映射,包含以下学生姓名和年龄数据

"zhangsan", 30
"lisi", 40

获取zhangsan的年龄

参考代码

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)scala> val map = Map(("zhangsan", 30), ("lisi", 30))
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 30)// 根据key获取value
scala> map("zhangsan")
res10: Int = 30

可变Map

定义

定义语法与不可变Map一致。但定义可变Map需要手动导入import scala.collection.mutable.Map

示例

定义一个映射,包含以下学生姓名和年龄数据

"zhangsan", 30
"lisi", 40

修改zhangsan的年龄为20

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)// 修改value
scala> map("zhangsan") = 20

Map基本操作

基本操作

  • 获取值(map(key))
  • 获取所有key(map.keys)
  • 获取所有value(map.values)
  • 遍历map集合
  • getOrElse
  • 增加key,value对
  • 删除key

示例

定义一个映射,包含以下学生姓名和年龄数据

"zhangsan", 30
"lisi", 40

获取zhangsan的年龄

获取所有的学生姓名

获取所有的学生年龄

打印所有的学生姓名和年龄

获取wangwu的年龄,如果wangwu不存在,则返回-1

新增一个学生:wangwu, 35

将lisi从可变映射中移除

参考代码

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)// 获取zhagnsan的年龄
scala> map("zhangsan")
res10: Int = 30// 获取所有的学生姓名
scala> map.keys
res13: Iterable[String] = Set(lisi, zhangsan)// 获取所有的学生年龄
scala> map.values
res14: Iterable[Int] = HashMap(40, 30)// 打印所有的学生姓名和年龄
scala> for((x,y) <- map) println(s"$x $y")
lisi 40
zhangsan 30// 获取wangwu的年龄,如果wangwu不存在,则返回-1
scala> map.getOrElse("wangwu", -1)
res17: Int = -1// 新增一个学生:wangwu, 35
scala> map + ("wangwu"->35) // 要用括号括起来. 因为+可以加多个, 加一个也要括起来
res22: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, wangwu -> 35)
// 一次增加两个
scala> map + (("ppp", 10), ("iii", 9)) // 或者这样  map + ("ppp" ->10, "iii" -> 9)
res37: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, ppp -> 10, iii -> 9)
// 将lisi从可变映射中移除
scala> map - "lisi"
res23: scala.collection.mutable.Map[String,Int] = Map(zhangsan -> 30)

2021年大数据常用语言Scala(十八):基础语法学习 Map对象相关推荐

  1. 2021年大数据常用语言Scala(八):基础语法学习 循环

    目录 循环 for表达式 while循环 循环 在scala中,可以使用for和while,但一般推荐使用for表达式,因为for表达式语法更简洁 for表达式 语法 for(i <- 表达式/ ...

  2. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  3. 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象

    目录 单例对象 定义object - 掌握 伴生对象 - 掌握 apply方法 - 掌握 main方法 单例对象 Scala中没有static关键字,但是它支持静态 如果要定义静态的东西,统统定义到o ...

  4. 2021年大数据常用语言Scala(四):基础语法学习 声明变量

    目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...

  5. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)

    目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...

  6. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  7. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

    目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...

  8. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

  9. 2021年大数据常用语言Scala(三十六):scala高级用法 泛型

    目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...

最新文章

  1. 《机器学习实战》K邻近算法
  2. 女生学python可以做什么_学 Python 都用来干嘛的?
  3. 【JulyEdu-Python基础】第 8 课:Python第三方库
  4. 【Java报错】Greenplum数据库报错 Value can not be converted to requested type 问题解决(踩坑分享)
  5. PHP7新特性 What will be in PHP 7/PHPNG
  6. 【Scrum】2010.12.27
  7. 剑指offer--二维数组的查找
  8. Java:集合,Map接口框架图
  9. ip地址和域名的关系是什么?
  10. Java BigDecimal 的舍入模式(RoundingMode)详解
  11. 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...
  12. 邻接矩阵的定义和例子
  13. ARDUINO传感器专题介绍(2)
  14. 将一个像素绘制到屏幕上
  15. 自动化知识图谱表示:从三元组到子图
  16. 【杂货铺】金融机构分类
  17. NT、WDM、WDF驱动概念
  18. 数字图像的傅里叶变换(Fourier Transform)及其展示: 频率中心化
  19. LeetCode No.704 二分查找 No.27移除元素
  20. WorkNC型面和结构面编程技巧分享

热门文章

  1. 一分钟带你了解什么是“复杂度” 算法上的O(1)、O(n)、O(logn) 这些都是什么❓❓
  2. 解决pip安装报错:is not a supported wheel on this platform
  3. 关于二叉树的层次遍历的花样(c++实现)
  4. debian10 dhcp简单配置
  5. python 直接if判断和is not None的区别
  6. ERROR: epmd error for host 192: badarg (unknown POSIX error)
  7. AI 芯片的分类及技术
  8. Wide Deep的OneFlow网络训练
  9. 单目和多目视觉统一标定
  10. 实用的Linux 安装 zip unzip