大数据学习路线分享Scala系列之数组,数组(Array)
- 定长数组
创建一个定长数组的方式

使用Array定义一个长度不变的数组
ArrayDemo {
def main(args: Array[String]){
//初始化一个长度为8的定长数组,其所有元素均为0val arr1 = new Array[Int](8)//直接打印定长数组,内容为数组的hashcode值println(arr1)//将数组转换成数组缓冲,就可以看到原数组中的内容了//toBuffer会将数组转换长数组缓冲println(arr1.toBuffer)//注意:如果不使用new获取数组,相当于调用了数组的apply方法,直接为数组赋值//初始化一个长度为1,值为10的定长数组val arr2 = Array[Int](10)//输出数组元素值println(arr2.toBuffer)//定义一个长度为3的定长数组val arr3 = Array("hadoop", "storm", "spark")//使用()来访问元素println(arr3(2))//包含10个整数的数组,初始化值为0 val nums = new Array[Int](10)//遍历数组for(i <- 0 until nums.length) print(s"$i:${nums(i)} ") println()//包含10个字符串的数组,初始化值为nullval strs0 = new Array[String](10)for(i <- 0 until strs0.length) print(s"$i:${strs0(i)} ") println()//赋初值的字符串数组val strs1 = Array("hello" ,"world")for(i <- 0 until strs1.length) print(s"$i:${strs1(i)} ") println()//访问并修改元素值strs1(0) = "byebye"for(i <- 0 until strs1.length) print(s"$i:${strs1(i)} ") println()}
}
result
- 变长数组
定义变长数组的方式:

使用 ArrayBuffer定义长度按需变化的数组。
import scala.collection.mutable.ArrayBuffer
VarArrayDemo {
def main(args: Array[String]){
//定义一个空的可变长Int型数组val nums = ArrayBuffer[Int]()//在尾端添加元素nums += 1//在尾端添加多个元素nums += (2,3,4,5)//使用++=在尾端添加任何集合nums ++= Array(6,7,8)//这些操作符,有相应的 -= ,--=可以做数组的删减,用法同+=,++=
//使用append追加一个或者多个元素
nums.append(1)nums.append(2,3) //在下标2之前插入元素
nums.insert(2,20)nums.insert(2,30,30) //移除最后2元素nums.trimEnd(2)//移除最开始的一个或者多个元素nums.trimStart(1)//从下标2出移除一个或者多个元素nums.remove(2)nums.remove(2,2) //使用增强for循环进行数组遍历
for(elem <- nums) println(elem) //基于下标访问使用增强for循环进行数组遍历for(i <- 0 until nums.length) println(nums(i))}
}
执行结果:
- 遍历数组
1.增强for循环,参见变长数组的代码
2.好用的until会生成脚标,0 until 10 包含0不包含10 参见定长数组部分代码4.1.4. 数组转换
- 数组转换
yield关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变
bject ArrayTransfer {
def main(args: Array[String]): Unit = {
//使用for推导式生成一个新的数组val a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)val res1 = for(elem <- a) yield 2*elemfor(elem <- res1) print(elem+" ")println()//对原数组元素过滤后生成一个新的数组//将偶数取出乘以10后再生成一个新的数组val res2 = for(elem <- a if elem%2 == 0)yield 2*elemfor(elem <- res2) print(elem+" ")println()//使用filter和map转换出新的数组val res3 = a.filter(_ % 2 == 0).map(2 * _)for(elem <- res3) print(elem+" ")println()}
执行结果:
- 数组常用算法
在Scala中,数组上的某些方法对数组进行相应的操作非常方便!
ArrayAlgorithm {
def main(args: Array[String]): Unit = {
val a = Array(9, 1, 2, 5, 3, 7, 8, 4)//求和val res1 = a.sumprintln(res1)//求最大值val res2 = a.maxprintln(res2)//排序val res3 = a.sorted// val res4 = a.sortWith(_>_)指定排序方式for(elem <- res3) print(elem + " ")}
}
执行结果:
继续阅读与本文标签相同的文章
下一篇 :
RPA干货丨详解RPA的设计与构建
-
云原生计算重塑企业IT架构 - 分布式应用架构
2026-05-19栏目: 教程
-
阿里云创新大会再出发,一些变化即将发生
2026-05-19栏目: 教程
-
阿里云的包年包月、按量付费、抢占式实例计费方式是什么,如何选择
2026-05-19栏目: 教程
-
阿里云开发者认证规则
2026-05-19栏目: 教程
-
RPA干货丨详解RPA的设计与构建
2026-05-19栏目: 教程
