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)
}
}
相关推荐
明月_清风22 分钟前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
2601_9669496538 分钟前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571761 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
GetcharZp1 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
行百里er2 小时前
Redis 版本演进、新特性与协议那些事儿
redis·后端
Joy T2 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
RAN11426760082 小时前
1.3第一个程序的介绍
开发语言·qt
打工仔折腾 AI3 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
IT_陈寒3 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端