课程目标,
- scala的集合框架
- 元组
- 数组
- List集合
- Map集合
- Set集合
- 集合上的常用方法
什么是scala集合框架
2.1scala集合框架分为三大类;序列seq 集合set 映射Map
Such as:
Seq是列表,适合存有序重复数据,进行快速插入/删除元素等场景
Set是集合,适合存无序非重复数据,进行快速查找海量元素等场景
总之,最大的区别不在语言实现上,而是数据结构的使用上
2.2集合主要有两个类型,可变和不可变类型(val var)
默认情况下都是不可变集合,如果需要可变集合,需要导包Import scala.collection.mutable.XXX Val array1=Array(1,2,3,4)
2.3 接下来分别介绍 元组,数组,List集合,set集合
3.元组
3.1元组是一系列数据的积集合
Val tp=(“小美”,20,20.02)
3.2定义的方式
特点:集合中的数据可以是不同的类型
3.3还有另有定义方式:
Val tp2=(“小美”,123,56)
注意:最多可放22个元素
tp2._1=“xiaomei” tp2_2=123
3.4对偶元组:val tp=(“kegongchanag”,1),两个元素
3.5拉链操作(通过代码的方式实战)(一一对应)
ZIP当出现数组长度不相同时,一一匹配,无则不匹配
4,数组
4.1scala中的数组,可变数组,不可变数组
可变数组:长度,内容都是可以改变 ArrayBuffer
不可变数组:长度不可变,内容可变Array
4.2数组的定义:
val arr=Array(1,3,5,8,10,20)
val arr2=new Array(Double)(5)//数组的类型和长度必arr(0)=1;
<>须设置的(长度为5,初始值都为0.0)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821154423573.png#pic_center)
4.3取值:
通过角标,000000000从0开始 数组(角标) java arr[0]
scala arr(1) []指泛型
4.4赋值: arr(0) = 值(30),区别java arr[0]
4.5可变数组注意事项:
首先导jar包:import scala.collection.mutable.ArrayBuffer
可变数组运算符号:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165020222.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165120263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165026831.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165031851.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165127170.png#pic_center)
注意:结果不能被去重,如果去重需要使用 distinct distinct
4.6数组上的常用方法:
*数组的反转:reverse*
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165356724.png#pic_center)
数组的截取:slice(from,util)(左闭右开)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821165501932.png#pic_center)
**5.List**
- 不可变的List 长度,内容都不能改变的
- 可变的ListBuffer 长度内容都是可变的 必须导包
Import scala.collection.mutable.ListBuffer
创建不可变的List:
Val list1=List[Int](3,6,7,8,10)
构建List的另一种方法 :: Nil
9::23::45::34::Nil
Nil 空列表
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821170217507.png#pic_center)
:: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表。用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素:+和+: 两者的区别在于 :+方法用于在尾部追加元素,+:方法用于在头部追加元素(: 要朝向集合)++ 该方法用于连接两个集合,list1++list2::: 该方法只能用于连接两个List类型的集合
*
对不可变集合的操作,生成一个新的集合(集合并没有改变,只是新的生成了一个集合)
*
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821170652928.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center)
**5.1 可变的List**
ListBuffer
导入jar包 import scala.collection.mutable.ListBuffer
val list1=listBuffer[Int]()
val list2=new ListBuffer[Int]()
+=
++=
-=
--=
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821171158509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center)
List集合有两部分组成
lst2:List[Int] = List(9,5,2,7)
头元素 + 尾列表
Head
Tail
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821171407758.png#pic_center)
List集合的转换:
toList
toArray
**6.Map**
定义第一种方法:
(1) Val mp1=Map(("canglaoshi",30),"bolaoshi",35)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821171621837.png#pic_center)
(2) val mp2=Map("xiaomei" ->20,"xiaoming“->18)
for(i< 区间) ->Map =>函数的标志
不可变的Map 长度,内容 都是可以不能改变的。 默认的可变的Map 长度内容都是可变的 必须导包
Map import scala.collection.mutable.Map
map上的几种方法
Contains(包含) Boolean
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821172525159.png#pic_center)
Mp(" ")
mp.get(" ")
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020082117263128.png#pic_center)
Mp.getOrElse(" ",)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821172740103.png#pic_center)
**7.Set**
set 实际上 就是Map集合的key,set储存的元素都是唯一的不重复
Val set=(1,3,45,6)
**8.集合上的常用方法**
方法中,基本上的都是函数
map : 一对一映射 也就是对原来的集合中的每一个元素,执行某一项操作,(该操作取决于函数的内容)自己的理解L万能转化器(自己想要什么格式,就转成什么格式)
fiter 过滤出满条件的所有元素
fiterNot过滤出不满足的元素
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821174406258.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center)
flatten 压平
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821174435581.png#pic_center)
flatMap
foreach 遍历,依然是对没u每一条数据进行处理,返回值类型是Unit
sorted、
9.集合框架常用的方法交集级
并集 差
1:交集:array1.intersect(array2)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821175043101.png#pic_center)
2:差集 array1.diff(array2)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821175122539.png#pic_center)
3:并集:array1.union(array2)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200821175153640.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ludGVybmF0aW9uOTg1,size_16,color_FFFFFF,t_70#pic_center)