2021年大数据常用语言Scala(十八):基础语法学习 Map对象
目录
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对象相关推荐
- 2021年大数据常用语言Scala(八):基础语法学习 循环
目录 循环 for表达式 while循环 循环 在scala中,可以使用for和while,但一般推荐使用for表达式,因为for表达式语法更简洁 for表达式 语法 for(i <- 表达式/ ...
- 2021年大数据常用语言Scala(十四):基础语法学习 数组 重点掌握
目录 数组 重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组 重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...
- 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象
目录 单例对象 定义object - 掌握 伴生对象 - 掌握 apply方法 - 掌握 main方法 单例对象 Scala中没有static关键字,但是它支持静态 如果要定义静态的东西,统统定义到o ...
- 2021年大数据常用语言Scala(四):基础语法学习 声明变量
目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...
- 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)
目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...
- 2021年大数据常用语言Scala(一):Scala简介
目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...
- 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握
目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...
- 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...
- 2021年大数据常用语言Scala(三十六):scala高级用法 泛型
目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...
最新文章
- 《机器学习实战》K邻近算法
- 女生学python可以做什么_学 Python 都用来干嘛的?
- 【JulyEdu-Python基础】第 8 课:Python第三方库
- 【Java报错】Greenplum数据库报错 Value can not be converted to requested type 问题解决(踩坑分享)
- PHP7新特性 What will be in PHP 7/PHPNG
- 【Scrum】2010.12.27
- 剑指offer--二维数组的查找
- Java:集合,Map接口框架图
- ip地址和域名的关系是什么?
- Java BigDecimal 的舍入模式(RoundingMode)详解
- 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...
- 邻接矩阵的定义和例子
- ARDUINO传感器专题介绍(2)
- 将一个像素绘制到屏幕上
- 自动化知识图谱表示:从三元组到子图
- 【杂货铺】金融机构分类
- NT、WDM、WDF驱动概念
- 数字图像的傅里叶变换(Fourier Transform)及其展示: 频率中心化
- LeetCode No.704 二分查找 No.27移除元素
- WorkNC型面和结构面编程技巧分享
热门文章
- 一分钟带你了解什么是“复杂度” 算法上的O(1)、O(n)、O(logn) 这些都是什么❓❓
- 解决pip安装报错:is not a supported wheel on this platform
- 关于二叉树的层次遍历的花样(c++实现)
- debian10 dhcp简单配置
- python 直接if判断和is not None的区别
- ERROR: epmd error for host 192: badarg (unknown POSIX error)
- AI 芯片的分类及技术
- Wide Deep的OneFlow网络训练
- 单目和多目视觉统一标定
- 实用的Linux 安装 zip unzip