Array和List

14 阅读1分钟
  // 可变数组
  val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3);
  // 可以直接添加元素
  arr1 += 4
  println(arr1)

  // 不可变数组
  val arr2 = Array(1,2,3)
  // 不可变,不能直接添加元素
  // arr2 += 4 // 报错
  println(arr2)
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))
case class DreamItem(content:String, isDone:Boolean, deadline:String, prior:Int)

def main(args: Array[String]): Unit = {
  val dream1 = DreamItem("", false, "2026-6-6", 1)
  val dream2 = DreamItem("", false, "2026-12-11", 2)
  val dream3 = DreamItem("", false, "2026-3-6", 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 oderList = dreamList.sortBy(_.prior)

  // 7
  val newList = oderList.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()
  })
}