定义
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
概念
变长数组指的是数组的长度时可变的,可以往数组中添加、删除元素
定义
创建变长数组,需要提前导入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
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
数组中的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
数组的 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
数组的 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)
概念
元组可以用来包含一组不同类型的值。
例如:姓名,年龄,性别,出生年月。
元组的元素是不可变的。
语法
使用括号来定义元组
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