Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)

学习目标

    • 数组
    • 定长数组
    • 变长数组
      • 添加/修改/删除元素
    • 遍历数组
    • 数组的常用操作
      • 常用算法
    • 元组
      • 定义元组
      • 访问元组

数组

定义

scala中数组的概念是和Java类似,
可以用数组来存放一组数据,
scala中有两种数组:
			一种是定长数组
			一种是变长数组

定长数组

定义

定长数组指的是数组的长度是不允许改变的
数组的元素是可以改变的

语法

//通过指定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)

//用元素直接初始化数组
val/var 变量名 = Array(元素1,元素2,元素3...)

注意

在scala中,数组的泛型使用 [](方括号)来指定
使用 () (括号)来获取元素

示例一

1.定义一个长度为100的整形数组
2.设置第1个元素为100
3.打印第1个元素

参考代码

scala> val a = new Array[Int] (100)
a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

scala> a(0) = 110

scala> println(a(0))
110

结果
在这里插入图片描述
示例二

1.定义一个包含以下元素的数组:
	"java","scala","python"
2.获取数组长度

参考代码

//定义包含 java,scala,python三个元素的数组
scala> val a = Array("java","scala","python")
a: Array[String] = Array(java, scala, python)

scala> a.length
res2: Int = 3

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第1张图片

变长数组

概念

变长数组指的是数组的长度时可变的,可以往数组中添加、删除元素

定义

创建变长数组,需要提前导入ArrayBuffer类
	import scala.collection.mutable.ArrayBuffer

语法

//创建空的ArrayBuffer变长数组,语法结构:
	  val/var a = ArrayBuffer[元素类型]()
	  
//创建带有初始元素的ArrayBuffer
	val/var a = ArrayBuffer(元素1,元素2,元素3....)

示例一

定义一个长度为0的整形变长数组

参考代码

val a = ArrayBuffer[Int]()

结果
在这里插入图片描述
示例二

定义一个包含以下元素的变长数组
"hadoop","storm","spark"

参考代码

scala> val a = ArrayBuffer("hadoop", "storm", "spark")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark)

结果
在这里插入图片描述

添加/修改/删除元素

使用 += 添加元素
使用 -= 删除袁术
使用 ++= 追加一个数组到变长数组

示例

1.定义一个变长数组,包含以下元素:
	"hadoop","spark","flink"
2.往该变长数组添加一个 "flume" 元素
3.从该变长数组删除 "hadoop" 元素
4.再将一个数组,该数组包含 "hive","sqoop"追加到变长数组中

参考代码

// 定义变长数组
scala> val a = ArrayBuffer("hadoop", "spark","flink")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)

// 追加一个元素
scala> a += "flume"
res3: a.type = ArrayBuffer(hadoop, spark, flink, flume)

// 删除一个元素
scala> a -= "hadoop"
res4: a.type = ArrayBuffer(spark, flink, flume)

// 追加一个数组
scala> a ++= Array("hive", "sqoop")
res5: a.type = ArrayBuffer(spark, flink, flume, hive, sqoop)

遍历数组

两种方式遍历

方式一:
	使用 for表达式 直接遍历数组中的元素
方式二:
	使用 索引 遍历数组中的元素

示例一

1.定义一个数组,包含以下元素:1,2,3,4,5
2.使用 for表达式 直接遍历,并打印数组的元素

参考代码

scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)

scala> for(i <- a) println(i)
1
2
3
4
5

结果
在这里插入图片描述
示例二

1.定义一个数组,包含以下元素:1,2,3,4,5
2.使用 for表达式 基于索引下标遍历数组,并打印元素

参考代码

scala> a
res9: Array[Int] = Array(1, 2, 3, 4, 5)

scala> for(i <- 0 to a.length - 1) println(a(i))
1
2
3
4
5

scala> for(i <- 0 until a.length) println(a(i))
1
2
3
4
5

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第2张图片
注意

0 unitl n ——生成一系列的数字,包含0,不包含n
0 to n ——包含0,也包含n

数组的常用操作

常用算法

1.求和——sum方法
2.求最大值——max方法
3.求最小值——min方法
4.排序——sorted方法

求和

数组中的sum方法可以将所有的元素进行累加,然后得到结果

示例

1.定义一个数组,包含以下几个元素:1,2,3,4
2.请计算该数组的和

参考代码

scala> val a = Array(1,2,3,4)
a: Array[Int] = Array(1, 2, 3, 4)

scala> a.sum
res12: Int = 10

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第3张图片
求最大值

数组中的max方法,可以获取到数组中的最大的那个元素值

示例

1.定义一个数组,包含以下几个元素:4,1,2,4,10
2.获取数组的最大值

参考代码

scala> val a = Array(4,1,2,4,10)
a: Array[Int] = Array(4, 1, 2, 4, 10)

scala> a.max
res13: Int = 10

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第4张图片
求最小值

数组的 min 方法,可以获取到数组中最小的那个元素值

示例

1.定义一个数组,包含以下几个元素:4,1,2,4,10
2.获取数组的最小值

参考代码

scala> val a = Array(4,1,2,4,10)
a: Array[Int] = Array(4, 1, 2, 4, 10)

scala> a.min
res14: Int = 1

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第5张图片
排序

数组的 sorted 方法,可以对数组进行升序排序;
而 reverse 方法,可以将数组进行反转,从而实现降序排序

示例

1.定义一个数组,包含以下几个元素:4,1,2,4,10
2.对数组进行升序排序,降序排序

参考代码

//定义数组
scala> val a = Array(4,1,2,4,10)
a: Array[Int] = Array(4, 1, 2, 4, 10)

//查看数组
scala> a
res15: Array[Int] = Array(4, 1, 2, 4, 10)

//对数组进行升序排序
scala> a.sorted
res16: Array[Int] = Array(1, 2, 4, 4, 10)

//对数组进行降序排序
scala> a.sorted.reverse
res17: Array[Int] = Array(10, 4, 4, 2, 1)

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第6张图片

元组

概念

元组可以用来包含一组不同类型的值。
	例如:姓名,年龄,性别,出生年月。
元组的元素是不可变的。

定义元组

语法

	使用括号来定义元组
	val/var 元组 = (元素1, 元素2, 元素3....)
	使用箭头来定义元组(元组只有两个元素)
	val/var 元组 = 元素1->元素2

示例一

定义一个元组,包含一个学生的以下数据:
	id:1
	姓名:zhangsan
	年龄:20
	地址:beijing

参考代码

scala> val a = (1, "zhangsan", 20, "beijing")
a: (Int, String, Int, String) = (1,zhangsan,20,beijing)

结果
在这里插入图片描述
示例二

1.定义一个元组,包含学生的姓名和年龄
	姓名:zhangsan
	年龄:20
2.分别使用括号,和箭头方式来定义元组

参考代码

//括号方式定义元组
scala> val a =("zhangsan", 20)
a: (String, Int) = (zhangsan,20)

//箭头方式定义元组
scala> val a = "zhangsan" -> 20
a: (String, Int) = (zhangsan,20)

结果
在这里插入图片描述

访问元组

使用 _1,_2,_3... 来访问元组中的元素,_1表示访问第一个元素,以此类推

示例

1.定义一个元组,包含一个学生的姓名和性别
	姓名:zhangsan
	性别:male
2.分别获取该学生的姓名和性别

参考代码

//定义元组
scala> val a = "zhangsan" -> "male"
a: (String, String) = (zhangsan,male)

//获取姓名
scala> a._1
res18: String = zhangsan

//获取性别
scala> a._2
res19: String = male

结果
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第7张图片
Scala学习第一天(十):数组(定长/变长/遍历数组;数组常用操作;元组)_第8张图片

你可能感兴趣的:(【大数据】Scala,大数据,scala)