一 、Array的定义
Array 是一种在 Scala 中用于存储固定大小、相同类型元素的数据结构。
它在内存中是连续存储的,这使得访问元素的速度非常快。
类型有两种:Array表示长度不可变的数组 和 ArrayBuffer表示长度可变的数组
二、不可变数组*****
Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。
三、可变数组
Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。
// 可变的
import scala.collection.mutable.ArrayBuffer
// 可变和不可变
// Array:有界、连续的,可以根据下标访问元素!
object Array02 {
def main(args: Array[String]): Unit = {
// 不可变的
val arr = Array(1,2,3,4,5)
// arr += 6
// 可变的
val arr1 = ArrayBuffer(1,2,3,4,5)
arr1 += 6
// 可以根据下标来访问
println(arr(0))
}
}
案例
任务背景:梦想清单管理。
- 1.使用case class 定义DreamItem类。它的属性有:内容,是否完成,截止日期,优先级。
- 2.定义可变Array来保存DreamItem。
- 3.添加3个梦想
- 4.将第2个梦想设置为已完成。
- 5.调高第3个梦想的优先级
- 6.根据优先级进行从高到低排序
- 7.把优先级排名前5的梦想保存到一个新的列表中
- 8.循环输出梦想列表
object Array02 {
//1.使用case class 定义DreamItem类。它的属性有:内容,是否完成,截止日期,优先级。
case class DreamItem(content:String, var isDone:Boolean, deadline:String, var prior:Int)
def main(args: Array[String]): Unit = {
// 定义可变Array来保存DreamItem,添加3个梦想
val list = ArrayBuffer(
DreamItem("-20",false,"2026-02-02",1),
DreamItem("赚88W",false,"2035-01-01",2),
DreamItem("YLXS",false,"2027-05-02",3)
)
// 4.将第2个梦想设置为已完成。
list(1).isDone = true
// 5.调高第3个梦想的优先级
list(2).prior = 4
// 6.sortBy 使用指定的字段排序
// reverse 翻转数组(正序 倒序)
val sortedList = list.sortBy(_.prior).reverse
// 7.把优先级排名前5的梦想保存到一个新的列表中
val topList = sortedList.take(2)
// 8.循环输出梦想列表
topList.foreach(ele => {
println(ele.content, if(ele.isDone) "已完成" else "未完成", ele.prior)
})
}
}