Array的定义

21 阅读2分钟

一 、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)
    })

  }
}