scala的Array

21 阅读1分钟

Array的定义

Array 是一种在 Scala 中用于存储固定大小、相同类型元素的数据结构。它在内存中是连续存储的,这使得访问元素的速度非常快。

类型有两种:Array表示长度不可变的数组 和 ArrayBuffer表示长度可变的数组

基本代码

//可变的
import scala.collection.mutable.ArrayBuffer


//可变和不可变

//Array:有序,连续的。可以根据下标来访问元素!

object array01 {
  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(arr1(4))
  }
}

例题

  1. 使用case class 定义DreamItem类。它的属性有:内容,是否完成,截止日期,优先级。
  2. 定义可变Array来保存DreamItem。
  3. 添加3个梦想
  4. 将第2个梦想设置为已完成。
  5. 调高第3个梦想的优先级
  6. 根据优先级进行从高到低排序
  7. 把优先级排名前5的梦想保存到一个新的列表中
  8. 循环输出梦想列表

例题代码如下

object array02 {

  //1
  case class DreamItem(content:String,var isDone:Boolean,deadline:String,var prior:Int)
  def main(args: Array[String]): Unit = {

    //2,3
    val list=ArrayBuffer(
      DreamItem("提前放寒假",false,"2026-1-10",2),
      DreamItem("老家下雪",false,"2026-1-10",2),
      DreamItem("去旅游",false,"2025-11-17",3)

    )
    //4
    list(1).isDone=true

    //5
    list(2).prior=4

    //6. sortBy 使用制定的字段排序
    //   reverse 翻转数组(正序,倒序)
    val sortedList=list.sortBy(_.prior).reverse

    //7. 把序排了之后的数组,截取前两个,放在一个新的列表中
    val topList=sortedList.take(2)

    //8
    list.foreach(ele =>{
      println(ele.content,if (ele.isDone) "已完成" else "未完成")
    })
  }
}