scala_数组、列表、元组、集合、map

数组

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




定长数组

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

语法

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

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

[!NOTE]

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


示例一

  1. 定义一个长度为100的整型数组
  2. 设置第1个元素为110
  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. 获取数组长度

参考代码

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

scala> a.length
res17: 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"
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)




# 遍历数组

可以使用以下两种方式来遍历数组:

  • 使用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> val a = Array(1,2,3,4,5)
a: 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


[!NOTE]

0 until n——生成一系列的数字,包含0,不包含n;左闭右开

0 to n ——包含0,也包含n



# 数组常用算法

scala中的数组封装了一些常用的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现。以下为常用的几个算法:

  • 求和——sum方法

  • 求最大值——max方法

  • 求最小值——min方法

  • 排序——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
res49: 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
res50: Int = 10
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值