object class4 {
def main(args: Array[String]): Unit = {
// 可变数组
val arr1 = scala.collection.mutable.ArrayBuffer(1,2,0,-1,20,3)
// 排序
val arr2 = arr1.sortWith((a,b)=>a>b)
// 切片:只取整个数组中的某个部分 slice
val arr3 = arr1.slice(0, 3)
// 过滤
val arr4 = arr1.filter(x => x>0)
// 搜索位置:检查某个元素的下标
val target = -2
val result = arr1.indexOf(target) // 如果没找到这个元素,就返回-1
println(s"${target}的下标是 ${result}")
arr4.foreach(ele=> println(ele))
}
}
其他避免方法
1. 使用 “安全下标访问” 工具方法
可以自己封装一个工具函数,统一处理下标越界的情况(比如返回默认值):
scala
// 自定义安全访问方法:下标合法则返回元素,否则返回默认值
def safeGet[T](arr: Array[T], index: Int, defaultValue: T): T = {
if (index >= 0 && index < arr.length) arr(index) else defaultValue
}
// 使用示例
val arr = Array(1,2,3)
println(safeGet(arr, 20, -1)) // 下标20越界,返回默认值-1
2. 用集合类替代数组(更安全的容器)
Scala 中很多集合(如List、Vector)的下标访问也会抛越界异常,但可以结合headOption、lastOption等方法安全访问首尾元素;或者用Try包装访问操作(捕获异常):
scala
import scala.util.Try
val list = List(1,2,3)
// 用Try捕获越界异常,转为Success/ Failure
val accessResult = Try(list(20)).toOption
accessResult match {
case Some(v) => println(v)
case None => println("下标越界")
}
3. 避免手动控制下标(用函数式遍历)
尽量不用 “下标 + 循环” 的方式操作数组,而是用map、foreach、fold等函数式方法,从根源上减少下标使用:
scala
val arr = Array(1,2,3)
// 无需下标,直接遍历元素
arr.foreach(ele => println(ele))
// 或用for推导式遍历元素
for (ele