11.14 Scala的Array

数组:物理空间上连续的(一个挨着一个)

优势:根据下标,能快速找到元素

列表:物理空间上不连续(不是一个元素挨着一个元素的!)

优势:插入元素,删除比较快

不可变数组:

Scala 复制代码
object Test_Array_1 {
  //不可变数组(默认就是)
  def main(args: Array[String]): Unit = {
    //1.创建数组
    val arr1 = Array(1,2,3)
    //2.查看数组的元素。根据下标:格式 数组名(下标)
    //下标从0开始
    //如果超过了最大的下标,会报错:ArrayIndexOutOfBoundsException
    println(s"arr1的第2个元素值是:${arr1(1)}")
    //println(arr1(20))
    //3.遍历
    //for,foreach,iterator
    //for(i <- arr1)println(i)
    //arr1.foreach(println)

    val it1 = arr1.iterator
    while (it1.hasNext){
      println(it1.next())
    }
  }
}

可变数组:

Scala 复制代码
import scala.collection.mutable.ArrayBuffer

object Test_Array_1 {
//  //不可变数组(默认就是)
//  def main(args: Array[String]): Unit = {
//    //1.创建数组
//    val arr1 = Array(1,2,3)
//    //2.查看数组的元素。根据下标:格式 数组名(下标)
//    //下标从0开始
//    //如果超过了最大的下标,会报错:ArrayIndexOutOfBoundsException
//    println(s"arr1的第2个元素值是:${arr1(1)}")
//    //println(arr1(20))
//    //3.遍历
//    //for,foreach,iterator
//    //for(i <- arr1)println(i)
//    //arr1.foreach(println)
//
//    val it1 = arr1.iterator
//    while (it1.hasNext){
//      println(it1.next())
//    }
//  }
  // 可变数组
def main(args: Array[String]): Unit = {
  val arr1 = ArrayBuffer(1,2,3,4)

  //1.删除一个元素
  arr1 -= 4

  //2.添加一个元素
  arr1 += 5

  //3.修改元素。数组名(下标) = 新值
  // 3 --> 100
  arr1(2) = 100

  //4.检查某个元素是否在数组中存在
  println(s"数组中是否包含5:${arr1.contains(5)}")

  //4.1找指定元素的下标:找元素2在数组中的下标是多少?
  //如果找不到,返回-1
  //如果有多个相同的元素,返回第一个的下标
  println(arr1.indexOf(2))
  arr1.foreach(println)

  //5.从一个数组中,截取连续的一段来组成一个新的数组
  //ArrayBuffer(-1,-2,1,2,3,4,5)  ---> (1,2,3)

//  //ArrayBuffer(-1,-2,1,2,3,4,5).slice(截取这段的起点下标,截取这段的终点下标(不包括))
//  val arr2 = ArrayBuffer(-1,-2,1,2,3,4,5).slice(2,5)
//  ArrayBuffer(-1,-2,1,2,3,4,5) ---> (1,2,3,4,5)
  val arr2 = ArrayBuffer(-1,-2,1,2,3,4,5).slice(2,7)
  arr2.foreach(println)
}
}
相关推荐
念何架构之路7 分钟前
Go语言常见并发模式
开发语言·后端·golang
Cosolar24 分钟前
大模型应用开发面试 • 第4期|A2A、复杂挑战与具身智能
人工智能·后端·面试
磊 子29 分钟前
多态类原理+四种类型转换+异常处理
开发语言·c++·算法
脆皮炸鸡75531 分钟前
库制作与原理~动态链接
linux·开发语言·经验分享·笔记·学习方法
XMYX-032 分钟前
26 - Go recover 捕获错误:优雅恢复的真正意义
开发语言·golang
小白学大数据33 分钟前
基于大模型的Python智能爬虫:语义识别与数据清洗实践
开发语言·爬虫·python·数据分析
迷渡1 小时前
聊一聊 Bun 用 Rust 重写这件事
开发语言·后端·rust
王中阳Go1 小时前
秒杀、分库分表、全链路追踪:一个电商微服务的架构全拆解
后端·go
古怪今人1 小时前
Gradle构建工具 Groovy/Kotlin DSL的现代化自动化构建工具
开发语言·kotlin·自动化