1 scala集合-数组

1 定长数组

定长数组,是指数组长度不可变。定义定长数组的方法有如下两种:

  • 方法1:
scala 复制代码
var/val variable_name = new Array[元素类型](数组长度)	// 通过制定长度定义

例如,定义一个长度为20的Int 类型数组。

scala 复制代码
scala> val a = new Array[Int](20)
val a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  • 方法2:
scala 复制代码
val/var variable_name = Array(ele1, ele2, ele3, ...)	// 使用元素直接定义

例如,定义一个数组元素为 1、2、3 的数组。

scala 复制代码
scala> val a = Array(1,2,3)
val a: Array[Int] = Array(1, 2, 3)

2 变长数组

变长数组的元素个数是可以增减的,我们可以添加、删除、修改元素。我们可以使用类 scala.collection.mutable.ArrayBuffer

定义空变长数组的语法为:

scala 复制代码
val/var variable_name = ArrayBuffer[元素类型]()

例如,定义一个变长数组,初始元素为 1、2、3

scala 复制代码
scala> import scala.collection.mutable.ArrayBuffer

scala> val a = ArrayBuffer(1,2,3)
val a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

2.1 添加元素到变长数组

使用操作符 += 添加元素到变长数组,例如,向变长数组 a 中添加元素 4

scala 复制代码
scala> import scala.collection.mutable.ArrayBuffer

scala> val a = ArrayBuffer(1,2,3)
val a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

scala> a+=4
val res0: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)

2.2 添加数组到变长数组

使用操作符 ++= 可以添加一个数组到定长数组。

scala 复制代码
scala> import scala.collection.mutable.ArrayBuffer

scala> val a = ArrayBuffer(1,2,3,4)
val a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)

scala> a ++= Array(5,6)
val res1: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6)

2.3 删除元素

使用操作符 -= 可以删除变长数组的一个元素。

scala 复制代码
scala> import scala.collection.mutable.ArrayBuffer

scala> val a = ArrayBuffer(1,2,3,4,5,6)
val a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6)

scala> a -= 4
val res2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 5, 6)

3 遍历数组

与 Java 一样,在 Scala 中,可以通过索引或 for 表达式遍历数组。

3.1 for 直接遍历

scala 复制代码
scala> val a = Array(1,2,3)
val a: Array[Int] = Array(1, 2, 3)

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

3.2 通过索引遍历

scala 复制代码
scala> val a = Array(1,2,3)
val a: Array[Int] = Array(1, 2, 3)
scala> for(idx <- 0 until a.length) println(a(idx))
1
2
3
相关推荐
CoovallyAIHub18 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP19 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo19 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo19 小时前
300:最长递增子序列
算法
Java水解21 小时前
Scala深入面向对象:类、对象与伴生关系
后端·scala
CoovallyAIHub1 天前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI2 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v2 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工2 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法