scala集合框架

课程目标,

  1. scala的集合框架
  2. 元组
  3. 数组
  4. List集合
  5. Map集合
  6. Set集合
  7. 集合上的常用方法

什么是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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值