一、数组
- 可变数组:直接可以更改原位置的元素不用返回新的值
- 不可变数组:不可直接对原位置的元素进行更改 会返回一个新的值(需定义 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))
}
}