(一)Scala集合分类和继承体系
●集合分类-按照数据结构特点分
Scala的集合都扩展自Iterable特质
有三大类:Seq序列(List)、Set、Map映射
●集合分类-按照可变和不可变分
不可变集合:scala.collection.immutable (默认)
可变集合: scala.collection.mutable
注:val和可变不可变
var和val指的是:变量能否被重新赋值
集合可不可变指的是:集合长度或内容可不可变
对于数组:
不可变数组Array:长度不可变,元素可变(定长数组)
可变数组ArrayBuffer:长度可变,但里面的元素可变(变长数组)
对于其他集合:
不可变集合immutable:长度不可变,内容不可变,如果调用添加或者删除方法,会产生新的集合,原集合不变
可变集合mutable:长度可变,内容可变
数组
●不可变/定长数组:
val/var 变量名= new ArrayT//scala.collection.immutable包下,不需要导包,默认就是
val/var 变量名 = Array(元素1, 元素2, 元素3…)
●可变/变长数组:
val/var 变量名 = ArrayBufferT //需要手动导入import scala.collection.mutable.ArrayBuffer包
val/var 变量名 = ArrayBuffer(元素1, 元素2, 元素3…)
●数组操作
指定分隔符 mkString
将数组转换成数组缓冲 toBuffer(打印Buffer可以看到数组内容)
根据索引获取元素 ()
添加元素 +=
删除元素 -=
追加一个数组到变长数组 ++=
往指定角标插入元素 insert
删除指定角标的元素 remove
定长=>>变长 toBuffer
变长=>>定长 toArray
●数组其他常用方法
在Scala中,数组上的某些方法对数组进行相应的操作非常方便!
sum求和
max求最大值
min求最小值
sorted排序
reverse反转
元组
(三)元组
元组也是可以理解为一个容器,可以用来存放各种相同或不同类型的数据。例如:姓名,年龄,性别,出生年月。
元组的元素是不可变的。
●创建元组
使用括号来定义元组
val/var 元组 = (元素1, 元素2, 元素3…)
使用箭头来定义元组(元组只有两个元素)
val/var 元组 = 元素1->元素2 //对偶/二元组是最简单的元组(k,v)
●获取元组中的值
使用下划线加脚标 ,例如 元组名._1 元组名._2 元组名.3
●将对偶(二元组)组成的数组转换成映射(映射就相当于Java中的Map,后面会学)
将对偶/二元组的集合转换成映射:
调用其toMap 方法
List
列表是scala中最重要的、也是最常用的数据结构。在scala中,也有两种列表,一种是不可变列表、另一种是可变列表
但都具备以下性质:
可以保存重复的值
有先后顺序
●不可变列表(默认)
import scala.collection.immutable.
创建方式1.使用List(元素1, 元素2, 元素3, …)来创建一个不可变列表
val/var 变量名 = List(元素1, 元素2, 元素3…)
创建方式2.使用::方法创建一个不可变列表
val/var 变量名 = 元素1 :: 元素2 :: Nil
注意:
使用::拼接方式来创建列表,必须在最后添加一个Nil表示空列表
●可变列表
import scala.collection.mutable._
创建方式1.使用ListBuffer元素类型创建空的可变列表
val/var 变量名 = ListBufferInt
创建方式2.使用ListBuffer(元素1, 元素2, 元素3…)创建可变列表
val/var 变量名 = ListBuffer(元素1,元素2,元素3…)
●可变列表操作
- 获取/更改元素(使用括号访问(索引值))
- 添加元素(+=)
- 追加一个列表(++=)
- 删除元素(-=)
- 转换为List(toList)
- 转换为Array(toArray)
- ●Set说明
Set代表一个没有重复元素的无序集合;即无法加入重复元素且不保证插入顺序的。
●不可变Set(默认)
import scala.collection.immutable._
1.创建一个空的不可变集,语法格式:
val/var 变量名 = Set类型
2.给定元素来创建一个不可变集,语法格式:
val/var 变量名 = Set(元素1, 元素2, 元素3…)
●可变Set
import scala.collection.mutable._
格式相同,导包不同
(七)Map
●说明
在Scala中,把哈希表这种数据结构叫做映射。类比Java的map集合
●不可变Map
import scala.collection.immutable.Map
格式一:使用箭头val/var map = Map(键->值, 键->值, 键->值…) // 推荐,可读性更好
格式二:利用元组val/var map = Map((键, 值), (键, 值), (键, 值), (键, 值)…)
●可变Map
import scala.collection.mutable.Map
格式相同,导包不同
●获取值
map(键)
map.get(键)
map.getOrElse(键,默认值)//根据键取值,如果取到了则返回,没取到返回指定的默认值
●修改值
map(键)=值
●增加值
map.put