一、映射 (Map)
(一)不可变映射
1、创建不可变映射
- 创建不可变映射mp,用键->值的形式
- 创建不可变映射mp,用(键, 值)的形式
- 注意:Map是特质(Scala里的trait,相当于Java里的interface),不能实例化
2、遍历不可变映射
- 利用for循环来实现遍历
- 调用mp.keys的foreach算子实现遍历
- 能否按键修改映射的值?
(二)可变映射
1、创建可变映射
- 创建可变映射mp
2、修改可变映射
- 将键02的值改为man(键02存在,执行修改操作)
- 将键05的值改为belle(键05存在,执行添加操作)
3、查询可变映射
- 查询键02的值,如果没有查到,则返回键02不存在
- 查询键08的值,如果没有查到,则返回键08不存在
4、添加元素
- 查看可变映射当前值
- 用两种方式添加元素
- 因为数组和列表都可以用append方法来添加新元素,我们试一试映射可不可以
5、删除元素
- 删除存在的键 - 07 对应的元素
- 删除不存在的键 - 11 对应的元素,不报错,映射也没有变化
- 试一试能否用remove方法来删除映射的元素
二、元组 (Tuple)
(一)定义元组
1、直接赋值定义元组
- 定义一个元组student(自动推断)
2、创建指定长度的元组
- 定义指定长度的元组,其中Tuple3是一个元组类,代表元组长度为3
(二)访问元组
- 使用方法_1、_2、_3访问元组的元素,与数组和字符串的位置不同,元组的元素下标从1开始。
- 访问元组的3个元素
- 元组不能像数组或列表那样通过圆括号加下标的方式来访问元素
- 访问元组的第6个元素(不存在的元素),报错
(三)迭代元组
-
直接用for循环遍历元素是不行的
-
使用元组的productIterator()方法产生全部元素构成的迭代器,然后遍历迭代器
-
使用for循环遍历元组生成迭代器
(四)元组转为字符串
- 使用Tuple.toString()方法可将元组全部元素组合成一个字符串
三、集合 (Set)
(一)定义集合
- 定义一个空的不可变集合set1(Nothing - 一无所有,Scala所有类的子类)
- 定义一个非空的不可变集合set2(Any - 包罗万象,Scala所有类的父类)
(二)增减元素
- 与列表一样,对于不可变集合进行元素的增加和删除实际上会产生一个新集合,原来的集合并没有改变
- 创建一个不可变集合set
- 添加一个集合不存在的元素 - 100
- 添加一个集合存在的元素1,集合里始终只有一个1(集合具有互异性)
- 当然,2和3两个元素也是加不进去的
- 减去一个存在的元素2
- 减去一个不存在的元素666,没有任何动静
(三)集合方法
- 创建一个集合cities
1、获取首元素
2、获取去首子集合
课堂练习:删除排前的三个城市
3、两个集合求并集
- 利用++运算符或union方法求两个集合的并集
- 两个集合都有6和2,但是并集里只出现1次
4、两个集合求交集
- 利用.&或.intersect()方法求两个集合的交集
5、求集合的最值
- 利用max和min方法求集合最值
6、求集合的总和和平均值
- 利用sum方法求和
7、集合的遍历
-
利用for循环遍历集合
-
利用遍历算子遍历集合