array
-
Array 和 List 的区别
-
Array: 有序,数组;元素在空间上连续。通过下标去访问元素会特别快!
-
List: 有序,链表;元素在空间上不连续
-
两种类型:可变,不可变
-
不可变:一个数组创建之后,不能添加,不能删除!
-
常用的方法:添加,删除,查找,循环,排序,......
object array01 { def main(args: Array[String]): Unit = { // 可变数组 val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3); // 可以直接添加元素 arr1 += 4 println(arr1)
// 不可变数组 val arr2 = Array(1,2,3) // 不可变,不能直接添加元素 // arr2 += 4 // 报错 println(arr2)} }
object array03 { def main(args: Array[String]): Unit = { // 可变数组 val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3) // 添加 arr1 += 4 arr1 += (5,6,7) // 删除 arr1 -= 4 // 删除某个下标上的元素 // arr1.remove(0) arr1.remove(0, 3) // 从指定位置开始删除,删除几个? // 修改 arr1(2) = 700 // 判断是否存在? println( arr1.contains(6) ) // true println( arr1.contains(3) ) // false
println(arr1.sum) // 求和 arr1.foreach(ele=> println(ele))} }
可变数组
object array04 {
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))
}
}
object array05 {
case class DreamItem(content:String, isDone:Boolean, deadLine:String, prior:Int)
def main(args: Array[String]): Unit = {
val dream1 = DreamItem("学习Scala", false, "2026-6-4", 1)
val dream2 = DreamItem("阅读3本书", false, "2026-12-11", 2)
val dream3 = DreamItem("每周运动3次", false, "2026-3-4", 3)
val dreamList = scala.collection.mutable.ArrayBuffer(dream1, dream2, dream3)
// 4
dreamList(1) = dreamList(1).copy(isDone=true)
// 5
dreamList(2) = dreamList(2).copy(prior=5)
// 6
val orderList = dreamList.sortBy(_.prior)
// 7
val newList = orderList.slice(0, 2)
// 8
newList.foreach(ele => {
println("---------------------------")
println(s"内容:${ele.content}")
println(s"状态:${if(ele.isDone) "完成" else "未完成"}")
println(s"截止日:${ele.deadLine}")
println(s"优先级:${ele.prior}")
println("---------------------------")
println()
})
}
}