Array 与 List 的区别
- Array: 有序, 数组, 元素在空间上连续,通过下标访问元素会特别的快!
- List: 有序, 链表, 元素在空间上不连续
- 两种类型: 可变, 不可变
- 不可变: 一个数组创建之后, 不能添加, 不能删除!
- 常用的方法: 添加, 删除, 查找, 排序, 切片, ......
object array01 {
def main(args: Array[String]): Unit = {
// 可变数组
val arr = scala.collection.mutable.ArrayBuffer(1,2,3)
//可以直接添加元素
arr1+=4
println(arr1)
//不可变数组
val arr2=Array(1,2,3)
//不可变,不能直接添加元素
//arr2+=4//报错
println(arr2)
}
}
package iterator
object array02 {
def main(args: Array[String]): Unit = {
// Array(1,2,3)
// val arr=Array.range(1,100)
// arr.foreach(println())
// val arr1=Array.range(1,100,3)
// arr1.foreach(println())
val arr1=Array(1,2,3)
//访问数组元素
println(arr1(0))
println(arr1(2))
println(arr1(20))//报错:数组越界!第21个元素
}
}
常用的方法:
1.添加 2.删除 3.查找 4.排序 5.切片, ......
object array02 {
def main(args: Array[String]): Unit = {
// 可变数组
val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3)
//添加
arr1 += 4
arr1 ++= (5,6,7)
// 追加
arr1.append(8)
// 删除第一个元素
//arr1.remove(0)
arr1.remove(3, 1) // 从指定位置开始删除,删除几个?
// 修改
arr1(2) = 700
// 判断是否存在?
println(arr1.contains(6)) // true
println(arr1.contains(8)) // false
println(arr1.sum) // 求和
arr1.foreach(ele=> println(ele))
}
}
题目:
- 使用 case class 定义 DreamItem 类。它的属性有:内容,是否完成,期,优先级。
- 定义可变 Array 来保存 DreamItem。
- 添加 3 个梦想
- 将第 2 个梦想设置为已完成。
- 调高第 3 个梦想的优先级
- 根据优先级进行从高到低排序
- 把优先级排名前 5 的梦想保存到一个新的列表中
- 循环输出梦想列表
package iterator
object array04 {
case class DreamItem(content:String, isDone:Boolean, deadline:String, prior:Int)
def main(args: Array[String]): Unit = {
val dream1 = DreamItem("学英语", false, "2025-06-1", 1)
val dream2 = DreamItem("读书", false, "2025-12-11", 2)
val dream3 = DreamItem("健身", false, "2025-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 = 0)
// 6
val orderList = dreamList.sortBy(_.prior)
// 7
val newList = orderList.slice(0, 2)
// 8
newList.foreach(ele => {
println(s"---${ele.content}---")
println(s"内容:${ele.content}")
println(s"状态:${ele.isDone match { case true => "已完成" case false => "未完成" }}")
println(s"截止日期:${ele.deadline}")
println(s"优先级:${ele.prior}")
println()
})
}
}