Scala学习之数组与元组

Posted 黑马程序员官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala学习之数组与元组相关的知识,希望对你有一定的参考价值。

一、数组

1.1 概述

数组就是用来存储多个同类型元素的容器, 每个元素都有编号(也叫: 下标, 脚标, 索引), 且编号都是从0开始数的. Scala中, 有两种数组,一种是定长数组,另一种是变长数组

1.2 定长数组

1.2.1 特点 1. 数组的长度不允许改变.
2. 数组的内容是可变的. 1.2.2 语法
格式一: 通过指定长度定义数组

格式二: 通过指定元素定义数组

 

注意:
1. scala 中,数组的泛型使用 [] 来指定 . 2. 使用 数组名 ( 索引 ) 来获取数组中的元素 . 3. 数组元素是有默认值的 , Int:0, Double:0.0, String: null 4. 通过 数组名 .length 或者 数组名 .size 来获取数组的长度 .

 1.2.3 示例

需求 1. 定义一个长度为10的整型数组, 设置第1个元素为11, 并打印第1个元素.
2. 定义一个包含"java", "scala", "python"这三个元素的数组, 并打印数组长度.
参考代码

1.3 变长数组

1.3.1 特点
数组的长度和内容都是可变的,可以往数组中添加、删除元素.
1.3.2 语法
创建变长数组,需要先导入ArrayBuffer类

定义格式一: 创建空的ArrayBuffffer变长数组

 

定义格式二: 创建带有初始元素的ArrayBuffffer变长数组

 

1.3.3 示例一: 定义变长数组

1. 定义一个长度为0的整型变长数组.
2. 定义一个包含"hadoop", "storm", "spark"这三个元素的变长数组.
3. 打印结果 

参考代码

 

1.3.4 示例二: 增删改元素
针对Scala中的变长数组, 可通过下述方式来修改数组中的内容

格式 使用 += 添加单个元素 使用 - = 删除单个元素 使用 ++= 追加一个数组到变长数组中 使用 -- = 移除变长数组中的指定多个元素 示例 1. 定义一个变长数组,包含以下元素 : "hadoop", "spark", "flflink" 2. 往该变长数组中添加一个 "flflume" 元素 3. 从该变长数组中删除 "hadoop" 元素 4. 将一个包含 "hive", "sqoop" 元素的数组 , 追加到变长数组中 . 5. 从该变长数组中删除 "sqoop", "spark" 这两个元素 . 6. 打印数组 , 查看结果 . 参考代码

 

1.4 遍历数组

概述

在Scala中, 可以使用以下两种方式来遍历数组:
1. 使用 索引 遍历数组中的元素
2. 使用 for表达式 直接遍历数组中的元素

示例
1. 定义一个数组,包含以下元素1,2,3,4,5
2. 通过两种遍历方式遍历数组,并打印数组中的元素 

参考代码

注意:
0 until n 获取0~n之间的所有整数, 包含0, 不包含n.
0 to n 获取0~n之间的所有整数, 包含0, 也包含n. 

1.5 数组常用算法

概述

Scala中的数组封装了一些常用的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现, 而是可以直接
拿来用。以下为常用的几个算法:
sum()方法: 求和
max()方法: 求最大值
min()方法: 求最小值
sorted()方法: 排序, 返回一个新的数组.
reverse()方法: 反转, 返回一个新的数组

需求
1. 定义一个数组, 包含4, 1, 6, 5, 2, 3这些元素.
2. 在main方法中, 测试上述的常用算法

参考代码

二、元组

元组一般用来存储多个不同类型的值。例如同时存储姓名,年龄,性别,出生年月这些数据, 就要用到元组来存储了。并且元组的长度和元素都是不可变的。 

2.1 格式

格式一 : 通过小括号实现

格式二: 通过箭头来实现

 

注意: 上述这种方式, 只适用于元组中只有两个元素的情况.

2.2 示例 

需求
1. 定义一个元组,包含学生的姓名和年龄.
2. 分别使用小括号以及箭头的方式来定义元组.

参考代码

2.3 访问元组中的元素

在Scala中, 可以通过 元组名._编号 的形式来访问元组中的元素,_1表示访问第一个元素,依次类推.也可以通过 元组名.productIterator 的方式, 来获取该元组的迭代器, 从而实现遍历元组.

格式

格式一: 访问元组中的单个元组. 

 

格式二: 遍历元组

 

示例
1. 定义一个元组,包含一个学生的姓名和性别,"zhangsan", "male"
2. 分别获取该学生的姓名和性别, 并将结果打印到控制台上

参考代码 

 

以上是关于Scala学习之数组与元组的主要内容,如果未能解决你的问题,请参考以下文章

理解Scala的函数式编程思想

大数据Scala学习—列表 集与映射

大数据Scala学习—列表 集与映射

Scala之option类型及偏函数使用异常处理正则表达式

零基础学python-2.7 列表与元组

swift学习之元组