Scala集合—可变数组与不可变数组+二维数组 | CSDN独创

这篇博客详细介绍了Scala中不可变数组与可变数组的操作,包括创建、元素访问、遍历、追加与删除。对于不可变数组,强调了其不可直接修改的特点,而可变数组则允许直接修改。此外,还讲解了二维数组的创建、元素访问及循环遍历。博客提供了丰富的代码示例,帮助读者理解两种类型的数组使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组

  • 可变数组:直接可以更改原位置的元素不用返回新的值
  • 不可变数组:不可直接对原位置的元素进行更改 会返回一个新的值(需定义 VAL 值名)

1.不可变数组(ImmutableArray)

第一步 :创建不可变数组

//1.创建数组

   val arr:Array[Int] = new Array[Int](5)

    //另一种创建方式
    val arr2=Array(12,37,42,58,97)
    println(arr)
    println(arr2)

在这里插入图片描述

第二步:对数组中的元素位置赋值

 println(arr(1))//0
    arr(0)=12//对数组中的元素位置赋值
    arr(4)=10

在这里插入图片描述

第三步:循环遍历的四种方法

I. 普通循环遍历
 for (i <-0 until arr2.length){
      println(arr2(i))
    }
    for (i <-arr2.indices) println(arr2(i))
II.直接遍历所有元素,增强for循环
for (elem <- arr2)println(elem)
III.迭代器
  val iter=arr2.iterator

    while (iter.hasNext) {
      println(iter.next())
      println("*"*15)
    }
VI.Foreach方法
arr2.foreach((elem:Int)=>println(elem))

arr.foreach(println)//直接简化这个形式
arr2.foreach(println)
println(arr2.mkString("**"))
println(arr2.mkString("---"))//传连接符

第四步:追加数组元素

val newArr =arr2.:+(73)//返回的是一个新的数组,而不是在原本的数组增加值
    println(arr2.mkString("**"))
    println(newArr.mkString("---"))


    val newArr2=newArr.:+(58)
    println(newArr2.mkString("//"))

    val newArr3=newArr2 :+15//当只有一个参数的时候 省略.和()
    val newArr4=19 +: 29 +: newArr3 :+ 35//追加多个元素,顺序是从左边追加到右边 +:是在最左边添加元素 :+是在最右边添加元素
    println(newArr4.mkString("---"))

第五步:查看不可变数组源码

I.代码源码
object Test01_ImmutableArray {
  def main(args: Array[String]): Unit = {
    //1.创建数组
    val arr:Array[Int] = new Array[Int](5)

    //另一种创建方式
    val arr2=Array(12,37,42,58,97)
    println(arr)
    println(arr2)

    println(arr(1))//0
    arr(0)=12//对数组中的元素位置赋值
    arr(4)=10
//
//
//    //数组的遍历
    //1)普通for循环
    for (i <-0 until arr2.length){
      println(arr2(i))
    }
    for (i <-arr2.indices) println(arr2(i))

    //)2 直接遍历所有元素,增强for循环
    for (elem <- arr2)println(elem)

    //3迭代器
    val iter=arr2.iterator

    while (iter.hasNext) {
      println(iter.next())
      println("*"*15)
    }

    //foreach方法
    arr2.foreach((elem:Int)=>println(elem))

    arr.foreach(println)//直接简化这个形式
    arr2.foreach(println)
    println(arr2.mkString("**"))
    println(arr2.mkString("---"))//传连接符

     //为不可变数组添加元素
    val newArr =arr2.:+(73)//返回的是一个新的数组,而不是在原本的数组增加值
    println(arr2.mkString("**"))
    println(newArr.mkString("---"))


    val newArr2=newArr.:+(58)
    println(newArr2.mkString("//"))

    val newArr3=newArr2 :+15//当只有一个参数的时候 省略.和()
    val newArr4=19 +: 29 +: newArr3 :+ 35//追加多个元素,顺序是从左边追加到右边 +:是在最左边添加元素 :+是在最右边添加元素
    println(newArr4.mkString("---"))
  }
}
II.代码结果如下

在这里插入图片描述

2.可变数组(MutableArray)

第一步:创建可变数组

 //可变数组
    val arr2=ArrayBuffer(23,57,92,65)
    val arr3=ArrayBuffer(33,58,95,92)
    println(arr2.mkString(","))

第二步:访问元素

 println(arr2)

    //访问元素
    println(arr2(0))

    println("*****")

第三步:添加元素

val newArr2=arr2 +=19
    println(arr2)
    println(newArr2)

    arr2.append(36,58)//添加元素的好方法
    println(arr2)
    arr2.insert(2,5,88)//在第三个位置之后追加两个元素
    println(arr2)

    //直接添加整个数组
    arr2.insertAll(8,arr3)
    println(arr2)

第四步:删除元素

I.按元素位置删除
arr2.remove(0,23)//按照元素位置删除
    println(arr2)
II.按元素值删除
 //按元素值删除
    arr2 -= 23
    println(arr2)

3.数组转换

I.可变数组转换为不可变数组->(小技巧)

 val arr:ArrayBuffer[Int] =ArrayBuffer(23,56,98)//可变数组
    val newArr:Array[Int] =arr.toArray//转换为不可变数组val newArr:Array[int]=arr.toArray
    println(newArr.mkString(","))
    println(arr)

II.不可数组转换为可变数组 ->(小技巧)

//6.不可变数组转换为可变数组
    newArr.toBuffer
    println(newArr)

4.整体代码如下

I.可变数组代码

import scala.collection.mutable.ArrayBuffer

object Test02_MutableArray {
  def main(args: Array[String]): Unit = {
    //可变数组
    val arr2=ArrayBuffer(23,57,92,65)
    val arr3=ArrayBuffer(33,58,95,92)
    println(arr2.mkString(","))
//    println(arr2.toString())
    println(arr2)

    //访问元素
    println(arr2(0))

    println("*****")
    //添加元素
//    arr2 :+ 15 试用于不可变数组
      val newArr2=arr2 +=19
      println(arr2)
      println(newArr2)

      arr2.append(36,58)//添加元素的好方法
      println(arr2)
      arr2.insert(2,5,88)//在第三个位置之后追加两个元素
      println(arr2)

      //直接添加整个数组
      arr2.insertAll(8,arr3)
      println(arr2)

    //4.删除元素
    arr2.remove(0,23)//按照元素位置删除
    println(arr2)

    //按元素值删除
    arr2 -= 23
    println(arr2)

    // 5.可变数组转换为不可变数组
    val arr:ArrayBuffer[Int] =ArrayBuffer(23,56,98)//可变数组
    val newArr:Array[Int] =arr.toArray//转换为不可变数组val newArr:Array[int]=arr.toArray
    println(newArr.mkString(","))
    println(arr)

    //6.不可变数组转换为可变数组
    newArr.toBuffer
    println(newArr)
  }
}

II.代码图

在这里插入图片描述

二、二维数组

1.创建一个二维数组

   val array: Array[Array[Int]] = Array.ofDim(2,3)

2.访问元素,赋值

array(0)(2)= 19
array(1)(0)= 25
println(array.mkString(","))

3.循环遍历

    for (i <- 0 until array.length; j<-0 until array(i).length){//6   3
      println(array(i)(j))
    }
    for (i<-array.indices; j<-array(i).indices){//双重循环
      println(array(i)(j) +"\t")
      if (j ==array(i).length-1)println()//indices包括了6,减一==5 两数相等换行
    }
    //二维数组就加两个_.foreach
    array.foreach(_.foreach(println))
  }
}

5.二维数组代码源码+代码结果图

  def main(args: Array[String]): Unit = {
    //1.创建一个二维数组
    val array: Array[Array[Int]] = Array.ofDim(2,3)

      //2.访问元素,赋值
    array(0)(2)= 19
    array(1)(0)= 25

    println(array.mkString(","))

    //循环遍历
    for (i <- 0 until array.length; j<-0 until array(i).length){//6   3
      println(array(i)(j))
    }
    for (i<-array.indices; j<-array(i).indices){//双重循环
      println(array(i)(j) +"\t")
      if (j ==array(i).length-1)println()//indices包括了6,减一==5 两数相等换行
    }
    //二维数组就加两个_.foreach
    array.foreach(_.foreach(println))
  }
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚风时亦鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值