Scala—Array

26 阅读1分钟

一、Array的定义

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

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

二、不可变数组

Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。

我们主要学习它的:创建数组,访问元素,填充Array.range

Array: 可变,不可变

  • 不可变: scala.Array

  • 可变: scala.collection.mutable.ArrayBuffer

val arr1 = scala.Array(1,2,3)
// arr1 += 4; 不可变的数组,不能添加

val arr2 = scala.collection.mutable.ArrayBuffer(1,2,3)
arr2 += 4  // 可变数组,可以添加元素

println(arr2)

三、可变数组

Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。

// 1. 添加
arr2 += (4,5) // 可变数组,可以添加元素

// 2. 删除
arr2 -= 2

// 3.获取指定下标的元素
// arr2(0) 下标为0,数组中的第一个元素
println(arr2(0))

// 4. 修改
arr2(0) = 100

// 5. 遍历
arr2.foreach(ele => println(ele))

println(arr2)

四、案例(梦想)

case class DreamItem(content:String,var isDone:Boolean, deadline:String,var prior: Int)
def main(args: Array[String]): Unit = {
  val dreamList = scala.collection.mutable.ArrayBuffer(
    DreamItem("我要赚10086亿", false, "2035-09-01", 1),
    DreamItem("(梦想2)", false, "2026-12-01", 2),
    DreamItem("(梦想3)", false, "2027-7-01", 3),
  )

  // 4
  dreamList(2).isDone = true

  // 5
  dreamList(0).prior = 1
  
  // 6
  val orderListed = dreamList.sortBy(_.prior)
  
  // 7
  val priorList = orderListed.take(2)

  // 8
  dreamList.foreach(ele => {
    println(ele.content, if(ele.isDone)"已实现" else "未实现")
  })

}