Array 和List

18 阅读2分钟
package 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)
  }
}
package array

/*
* Array 和 List的区别
* Array:有序,数组:元素在空间上连续,通过下标去访问元素会特别快
* List:有序,链表:元素在空间上不连续
* 两种类型:可变   不可变
* 不可变:一个数组创建之后,不能添加,不能删除
* 常用的方法:添加,删除,查找,排序
* */
object array02 {
  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,3)//从指定的位置开始删除
    //修改
    arr1(2) = 700
    //判断是否存在
    println(arr1.contains(6))//true
    println(arr1.contains(8))//false
    println(arr1.sum)//求和
    arr1.foreach(ele=>println(ele))
  }
}
package array

object array01 {
  def main(args: Array[String]): Unit = {
    val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3)
    val arr2 = arr1.sortWith((a,b)=>a>b)
    val arr3 = arr1.slice(0,3)
    val arr4 = arr1.filter(x => x>0)
    val target = -2
    val result = arr1.indexOf(target)
    println(s"${target}的下标是 ${result}")
    arr4.foreach(ele=> println(ele))
  }
}
package array
object array04{
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()
  })
 }
}