1:数组
1.1:定长数组
-
定长数组指的是数组的长度是不允许改变的
-
数组的元素是可以改变的
-
语法
// 通过指定长度定义数组 val/var 变量名 = new Array[元素类型](数组长度) // 用元素直接初始化数组 val/var 变量名 = Array(元素1, 元素2, 元素3...)
-
注意:在scala中,数组的泛型使用[]来指定,使用()来获取元素
-
示例:
scala> val a=new Array[Int](5) a: Array[Int] = Array(0, 0, 0, 0, 0) scala> a(0) res19: Int = 0 scala> a(0)=10 scala> a res21: Array[Int] = Array(10, 0, 0, 0, 0) scala> val b =Array("hadoop","spark","hive") b: Array[String] = Array(hadoop, spark, hive) scala> b(0) res24: String = hadoop scala> b.length res25: Int = 3
1.2:变长数组
-
变长数组指的是数组的长度是可变的,可以往数组中添加、删除元素
-
创建变长数组,需要提前导入类
import scala.collection.mutable._
-
语法
- 创建空的ArrayBuffer变长数组:
val/var a = ArrayBuffer[元素类型]()
- 创建带有初始元素的ArrayBuffer:
val/var a = ArrayBuffer(元素1,元素2,元素3....)
- 创建空的ArrayBuffer变长数组:
-
示例
扫描二维码关注公众号,回复: 10560251 查看本文章//导入ArrayBuffer类型 scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer //定义一个长度为0的整型变长数组 scala> val a=ArrayBuffer[Int]() a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() //定义一个有初始元素的变长数组 scala> val b = ArrayBuffer("hadoop", "storm", "spark") b: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark)
-
变长数组的增删改操作
+=
添加元素-=
删除元素++=
追加一个数组到变长数组
-
示例
// 定义变长数组 scala> val a = ArrayBuffer("hadoop", "spark", "flink") a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink) // 追加一个元素 scala> a += "flume" res10: a.type = ArrayBuffer(hadoop, spark, flink, flume) // 删除一个元素 scala> a -= "hadoop" res11: a.type = ArrayBuffer(spark, flink, flume) // 追加一个数组 scala> a ++= Array("hive", "sqoop") res12: a.type = ArrayBuffer(spark, flink, flume, hive, sqoop)
1.3:遍历数组
-
使用
for表达式
直接遍历数组中的元素 -
使用
索引
遍历数组中的元素 -
示例:
scala> for(i <- a)println(i) hadoop hive flume spark scala> for(i <- 0 to a.length -1 )println(a(i)) hadoop hive flume spark scala> for(i <- 0 until a.length) println(a(i)) hadoop hive flume spark //0 until n ——生成一系列的数字,包含0,不包含n //0 to n ——包含0,也包含n
1.4:数组操作
- scala中的数组封装了丰富的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现。
- 示例
scala> val array=Array(1,3,4,2,5) array: Array[Int] = Array(1, 3, 4, 2, 5) //求和 scala> array.sum res10: Int = 15 //求最大值 scala> array.max res11: Int = 5 //求最小值 scala> array.min res12: Int = 1 //升序 scala> array.sorted res13: Array[Int] = Array(1, 2, 3, 4, 5) //降序 reverse 反转 scala> array.sorted.reverse res14: Array[Int] = Array(5, 4, 3, 2, 1)
2:元组
- 元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。元组的元素是不可变 的
2.1 :语法
- 使用括号来定义元组:
val/var 元组变量名称 = (元素1, 元素2, 元素3....)
- 使用箭头来定义元素(元组只有两个元素):
val/var 元组 = 元素1->元素2
2.2:示例
// 可以直接使用括号来定义一个元组
scala> val a = (1, "张三", 20, "北京市")
a: (Int, String, Int, String) = (1,张三,20,北京市)
//使用箭头来定义元素
scala> val b = 1->2
b: (Int, Int) = (1,2)
2.3: 访问元组
- 示例:(使用 _1、_2、_3… 来访问元组中的元素,_1表示访问第一个元素,依次类推)
scala> val a = (1, "张三", 20, "北京市")
a: (Int, String, Int, String) = (1,张三,20,北京市)
//获取元组中的第一个元素
scala> a._1
res18: Int = 1
//获取元组中的第二个元素
scala> a._2
res19: String = 张三
//获取元组中的第三个元素
scala> a._3
res20: Int = 20
//获取元组中的第四个元素
scala> a._4
res21: String = 北京市
//不能修改元组中的值
scala> a._4="上海"
<console>:12: error: reassignment to val
a._4="上海"
^
```