scala中的Array

25 阅读2分钟

1. 理解Array的概念和定义

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

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

2. 掌握不可变和可变Array的特点与区别

(一)不可变数组:

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

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

package array

//可变的
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( arr(4) )

  }

}

(二)可变数组:

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

案例:梦想清单,将自己要做的事情列出来,写在清单中,并对清单做动态的操作****

1. 新建

要先导入 ArrayBuffer。 可变的数据结构都需要额外导入

2. 访问修改

数组名(下标)=新值。

3. 添加元素

(1) 添加一个元素;+= 元素

(2) 添加多个元素;+=(元素1, 元素2)

4. 删除元素

(1) 删除一个元素: -= 元素

(2) 删除多个元素: -= (元素1, 元素2)

(3) 删除指定位置的元素: remove(下标)

(4) 删除指定位置的多个元素:remove(下标起点,下标终点)

package array

import scala.collection.mutable.ArrayBuffer

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("存5k块钱",false,"2026-1-10",3),
      DreamItem("去哈尔滨",false,"2026-1-10",4),
    )

    // 4.将第2个梦想设置成已完成
    list(1).isDone = true

    // 5.调高第3个梦想的优先级
    list(2).prior = 4


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

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

    // 8.循环输出梦想列表
    list.foreach(ele =>{
      println(ele.content,if(ele.isDone)"已完成" else "未完成")
    })
  }

}

3. 熟悉Array的常用方法

  • 1. 映射(Map)

arr.map(f):对数组中的每个元素应用函数f,并返回一个新的不可变数组。

  • **2. 过滤(Filter)**任务搜索
  • 3. 搜索和比较

   - arr.indexOf(elem):返回元素elem在数组中的第一个索引。

   - arr.contains(elem):检查数组是否包含元素elem。

  • 4. 切片(Slice)

    arr.slice(from, until):返回数组的一个子数组,从索引from开始直到索引until(不包括until)。