scala中的Array

35 阅读1分钟

(一)Array的定义

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

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

(二)可变数组,不可变数组

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

package array

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

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)
    // 从指定位置开始删除,删除几个
    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 array03 {
  def main(args: Array[String]): Unit = {
    // 可变数组
    val arr1 = scala.collection.mutable.ArrayBuffer(1,2,0,-1,20,3)

    // 排序
    val arr2 = arr1.sortWith((a,b)=>a>b)

    // 切片:只取整个数组中的某个部分 slice
    val arr3 = arr1.slice(0, 3)

    // 过滤
    val arr4 = arr1.filter(x => x>0)

    // 索引位置:检查某个元素的下标
    val target = -2
    val result = arr1.indexOf(target) // 如果没找到这个元素,就返回-1

    println(s"${target}的下标是 ${result}")

    arr4.foreach(ele => println(ele))
  }
}