Spark学习笔记08:Scala数据结构

目录

(一)定长数组

1、数组定义

(1)定义数组时初始化数据

(2)定义时指定数组长度后赋值

2、数组遍历

(1)传统for循环方式

(2)增强for循环方式

(3)利用foreach算子遍历数组

(4)数组求和

3、常用方法

(1)求数组中数值总和

(2)求数组中的最大值

(3)求数组中的最小值

(4)对数组进行升序排序

(5)对数组进行降序排序

(二)变长数组

1、数组定义

2、数组合并

3、插入元素

4、移除元素

二、列表 (List)

(一)不可变列表

1、创建不可变列表

2、给列表添加元素

(1)在列表头添加元素

(2)在列表尾添加元素

3、列表合并操作

4、二维列表

(二)可变列表

1、创建可变列表

2、列表合并

3、列表排序

4、列表总和、平均值、最值

5、添加新元素

6、移除列表元素

三、映射 (Map)

(一)不可变映射

1、创建不可变映射

2、遍历不可变映射

(二)可变映射

1、创建可变映射

2、修改可变映射

3、查询可变映射

4、添加元素

5、删除元素

四、元组 (Tuple)

(一)定义元组

1、直接赋值定义元组

2、创建指定长度的元组

(二)访问元组

(三)迭代元组

(四)元组转为字符串

五、集合 (Set)

(一)定义集合

(二)增减元素

(三)集合方法

1、获取首元素

2、获取去首子集合

3、两个集合求并集

4、两个集合求交集

5、求集合的最值


Scala集合(collection)分为可变集合(mutable collection)和不可变集合(immutable collection)。可变集合可以对其中的元素进行修改、添加、移除;而不可变集合永远不会改变,但是仍然可以模拟添加、移除或更新操作。这些操作都会返回一个新的集合,原集合的内容不发生改变。

一、数组 (Array)

  • Scala中的数组分为定长数组和变长数组,定长数组初始化后不可对数组长度进行修改,而变长数组则可以修改。

(一)定长数组

1、数组定义

(1)定义数组时初始化数据

  • 自动推断数组类型

Spark学习笔记08:Scala数据结构_第1张图片

  • 手动指定数据类型

Spark学习笔记08:Scala数据结构_第2张图片

(2)定义时指定数组长度后赋值

先定义,后赋值

Spark学习笔记08:Scala数据结构_第3张图片

数组下标越界

2、数组遍历

  • 定义数组arr(自动推断类型,静态初始化)

(1)传统for循环方式

通过数组下标来遍历数组元素

通过(arr.length - 1 to 0) by -1实现反向遍历

(a to b) by 1 相当于 (a to b)

(2)增强for循环方式

正向遍历数组元素

Spark学习笔记08:Scala数据结构_第4张图片

反向遍历数组元素

(3)利用foreach算子遍历数组

Spark学习笔记08:Scala数据结构_第5张图片

(4)数组求和

采用遍历算子 - 失败

Spark学习笔记08:Scala数据结构_第6张图片

采用增强for循环

Spark学习笔记08:Scala数据结构_第7张图片

3、常用方法

定义数组arr

Spark学习笔记08:Scala数据结构_第8张图片

(1)求数组中数值总和

调用sum方法

(2)求数组中的最大值

调用max方法

(3)求数组中的最小值

调用min方法

Spark学习笔记08:Scala数据结构_第9张图片

(4)对数组进行升序排序

调用.sorted方法

(5)对数组进行降序排序

调用.sorted.reverse方法

Spark学习笔记08:Scala数据结构_第10张图片

(二)变长数组

1、数组定义

  • 变长数组使用类scala.collection.mutable.ArrayBuffer进行定义

定义一个变长Int类型数组arr

Spark学习笔记08:Scala数据结构_第11张图片

利用+=运算符添加数组元素

Spark学习笔记08:Scala数据结构_第12张图片

遍历数组arr

利用-=运算符删除数组元素

  • 数组中有多个值相同的元素,则从前向后删除第一个匹配的元素,

2、数组合并

Scala支持使用++=符号将两个变长数组进行合并

  • 注意arr1会是合并后的数据,即ArrayBuffer(1,3,5,7,9,2,4,6,8,10)

Spark学习笔记08:Scala数据结构_第13张图片

3、插入元素

使用insert()方法可以在数组指定位置插入一个元素

Spark学习笔记08:Scala数据结构_第14张图片

无法一次性插入多个元素

4、移除元素

使用remove()方法可以在数组的固定位置移除指定数量的元素

从数组arr的下标为1的位置开始移除2元素

Spark学习笔记08:Scala数据结构_第15张图片

如果移除起始位置+删除数量 > 数组长度,会报错

二、列表 (List)

Scala中的列表分为可变列表和不可变列表,默认使用的列表为不可变列表。

(一)不可变列表

1、创建不可变列表

创建一个Int类型的列表

创建一个混合类型的列表 

2、给列表添加元素

(1)在列表头添加元素

利用.+:在列表头添加新元素

Spark学习笔记08:Scala数据结构_第16张图片

在列表nums的头部追加一个元素100,生成一个新列表 nums3,列表nums没有变的

Spark学习笔记08:Scala数据结构_第17张图片

(2)在列表尾添加元素

利用.:+在列表尾添加新元素

在列表nums的尾部追加一个元素100,生成一个新列表 num4,列表nums没有变的

Spark学习笔记08:Scala数据结构_第18张图片

3、列表合并操作

Spark学习笔记08:Scala数据结构_第19张图片

4、二维列表

列表的列表称为二维列表

  • 定义二维列表

Spark学习笔记08:Scala数据结构_第20张图片

  • 遍历二维列表

Spark学习笔记08:Scala数据结构_第21张图片

(二)可变列表

1、创建可变列表

可变List需要使用scala.collection.mutable.ListBuffer

Spark学习笔记08:Scala数据结构_第22张图片

创建空列表,添加数据

Spark学习笔记08:Scala数据结构_第23张图片

2、列表合并

将列表list1与列表list2合并,list1在前,list2在后

Spark学习笔记08:Scala数据结构_第24张图片

将列表list1与列表list2合并,list2在前,list1在后

注意:哪怕执行list1 :++ list2,依然是list1在前,list2在后

3、列表排序

列表升降序

Spark学习笔记08:Scala数据结构_第25张图片

4、列表总和、平均值、最值

Spark学习笔记08:Scala数据结构_第26张图片

5、添加新元素

调用可变列表的insert(pos, value),在pos位置插入新元素value

Spark学习笔记08:Scala数据结构_第27张图片

特殊情况,在列表头插入新元素,pos = 0

Spark学习笔记08:Scala数据结构_第28张图片

特殊情况,在列表尾追加新元素,pos = list.length

Spark学习笔记08:Scala数据结构_第29张图片

6、移除列表元素

调用可变列表的remove(pos, count),从pos位置开始移除count个列表元素

Spark学习笔记08:Scala数据结构_第30张图片

三、映射 (Map)

Scala中的Map也分可变Map不可变Map,默认为不可变Map

(一)不可变映射

1、创建不可变映射

->的形式,创建不可变映射mp

Spark学习笔记08:Scala数据结构_第31张图片

(, )的形式,创建不可变映射mp

Spark学习笔记08:Scala数据结构_第32张图片

Map是抽象类,不能实例化

2、遍历不可变映射

调用foreach实现遍历

Spark学习笔记08:Scala数据结构_第33张图片

利用for循环来实现遍历

Spark学习笔记08:Scala数据结构_第34张图片

(二)可变映射

创建可变Map需要引入类scala.collection.mutable.Map

1、创建可变映射

Spark学习笔记08:Scala数据结构_第35张图片

2、修改可变映射

02存在,执行修改操作

Spark学习笔记08:Scala数据结构_第36张图片

05存在,执行添加操作

Spark学习笔记08:Scala数据结构_第37张图片

3、查询可变映射

查询键02的值,如果没有查到,则返回-1

Spark学习笔记08:Scala数据结构_第38张图片

查询键08的值,如果没有查到,则返回-1

4、添加元素

查看可变映射当前值

用两种方式添加元素

Spark学习笔记08:Scala数据结构_第39张图片

 5、删除元素

删除存在的键07 对应的元素

删除不存在的键11 对应的元素,不报错,映射也没有变化

四、元组 (Tuple)

元组是一个可以存放不同类型对象的集合,元组中的元素不可以修改。

(一)定义元组

1、直接赋值定义元组

2、创建指定长度的元组

Scala支持的元组最大长度为22即可以使用Tuple1Tuple22,元组的实际类型取决于元素数量和元素的类型。

(二)访问元组

元组的元素下标从1开始

访问元组的第6个元素(不存在的元素),报错

(三)迭代元组

不能直接用for循环遍历元素,可以使用元组的productIterator()方法

Spark学习笔记08:Scala数据结构_第40张图片

(四)元组转为字符串

使用Tuple.toString()方法可将元组全部元素组合成一个字符串

  • 元组与字符串进行连接运算,元组会自动转换成字符串

Spark学习笔记08:Scala数据结构_第41张图片

五、集合 (Set)

  • Scala Set集合存储的对象不可重复。Set集合分为可变集合和不可变集合,默认情况下,Scala使用的是不可变集合,如果要使用可变集合,就需要引用scala.collection.mutable.Set类。
  • 集合的三大特点:确定性、互异性、无序性

(一)定义集合

定义一个空的不可变集合Nothing - 一无所有,Scala所有类的子类)

定义一个非空的不可变集合(Any - 包罗万象,Scala所有类的父类)

(二)增减元素

与列表一样,对于不可变集合进行元素的增加和删除实际上会产生一个新集合,原来的集合并没有改变

  • 创建一个不可变集合

  • 添加一个集合不存在的元素

  • 添加一个集合存在的元素1,集合里始终只有一个1(集合具有互异性)

  • 减去一个存在的元素2

  • 减去一个不存在的元素666

(三)集合方法

创建一个集合

1、获取首元素

调用head方法

2、获取去首子集合

调用tail方法,去掉了集合里的第一个元素

3、两个集合求并集

利用++求两个集合的并集

Spark学习笔记08:Scala数据结构_第42张图片

4、两个集合求交集

利用.&.intersect()方法求两个集合的交集

Spark学习笔记08:Scala数据结构_第43张图片

5、求集合的最值

利用maxmin方法求集合最值

Spark学习笔记08:Scala数据结构_第44张图片

你可能感兴趣的:(Spark,scala,数据结构,开发语言)