数组及元组

第3章 数组及元组

3.1 定长数组

定义长度不变的数组可以使用Array

Scala数组的底层实际上是Java数组。例如字符串数组在底层就是Java的String[],整数数组在底层就是Java的Int[]

val nums = new Array[Int](10)//生成10个整数的数组,所有元素初始化为0
val nums = new Array[String](10)//生成10个字符串的数组,所有元素初始化为null
val s = Array("hello", "world")//已提供初始值就不需要new了
s(0) = "good"//使用()而不是[]来访问元素

[Any]泛型表示该数组可以存放任意类型。

3.2 变长数组

如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer。

+=或++=用于在数组尾端添加元素,当添加多个元素时已括号包起来

import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[int]()//或new ArrayBuffer[int]
b += 1//添加一个元素
b += (2, 3//添加多个元素

trimEnd()和remove()用于移除元素

trimEnd(a):是从数组尾开始移除a位元素

remove(a,(b)):删除脚标为a的元素,如果有b参数,就从脚标为a的元素开始删除b位元素

b.trimEnd(2)//移除最后2个元素

insert()插入元素

b.insert(1, 6)//在脚标为2的位置插入6
b.insert(2, 7, 8, 9)//在脚标为2的位置插入7,8,9

3.3 遍历

for(i <- 区间)会遍历该区间所有的值

(0 until a.length).reverse //从数组尾端开始遍历

for(elem <- 数组) //直接访问数组中的每个元素

3.4 数组转换

toArray和toBuffer用于数组与缓冲区相互转换

for(...)yield 用于创建一个和以前一样的数组或缓冲区

遍历一个数组时并处理符合条件的元素,例如:

for(elem <- a if elem % 2 == 0) yield 2 * elem
或
a.felter{ _ % 2 == 0} map {2 * _}

3.5 常用算法

sum方法用于数值型元素求和

min和max用于输出数组或缓冲区的最小和最大元素

sorted用于排序并返回经过排序的新数组

sorted(_ > _)从大到小排序

mkString方法在指定元素间的分隔符

val a = Array(1, 7, 2, 9)
a.mkString(" , ")	//"1 , 7 , 2 , 9"

3.6 多维数组

可以用ofDim方法构建

val matrix = Array.ofDim[Double](3, 4)//3行4列的数组

访问其中的元素要用两个圆括号

matrix(row)(column) = 42

3.7 元组

元组是不同类型值的聚集,元组的值是通过单个的值包含在圆括号中构成,例如:

(1,3.14,“Fred”)

定义元组的方式

元组中最大只能有22个元素

获取元组方式:元组._1 或 元组 _1

试图通过一个类型参数来限定元组中所有

的元素的类型是错误的

3.8 拉链操作

将两个元组的值做对应的关联组成对偶的数组

val a = Array0, 1, 2)
val b = Array("a", "b", "c")
val pairs = a.zip(b)	//Array((0, "a"), (1, "b"), (2, "c"))
posted @   昵称已经被使用  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示