数组
提示:推荐使用不可变数组
一、不可变数组
1、第一种方式定义数组
定义:val arr1 = new Array[int](10)
(1)new是关键字
(2)[int]是指定可以存放的数据类型,如果希望存放任意数据类型,则指定Any
(3)(10)表示数组的大小,确定后就不可以变化
创建:
//1、创建数组 val arr: Array[Int] = new Array[Int](10) //另一种创建方式 val arr1 = Array(1, 2, 3, 4, 5)
2、赋值,查询:
//赋值 arr(0) = 1 arr(3) = 33 //2、查询数据 println(arr(0)) println(arr(3))
3、数组的遍历
(1)不同的for循环, until是不包含 arr.length 的意思
用indices遍历
//(1)不同的for循环, until是不包含 arr.length 的意思 for (i <- 0 until arr1.length) { println(arr1(i)) } println("----------------") //用indices遍历 for (i <- arr1.indices) println(arr1(i))

(2)增强for循环,直接遍历所有元素
for (elem <- arr2) println(elem)
(3)迭代器
val iter = arr2.iterator while (iter.hasNext) println(iter.next())
(4)调用foreach方法
arr2.foreach(println)
(5)用mkstring连接打印
println(arr2.mkString("--"))

4、不可变数组添加元素,原数组不变,会创建一个新数组
//在后添加 val newArr2 = arr2.:+(11) println(arr2.mkString(", ")) println(newArr2.mkString(", ")) //在前添加 val newArr3 = arr2.+:(22) println(newArr3.mkString(", "))

简化和连续添加
//后 val newArr4 = arr2 :+ 33 :+ 55 //前 val newArr5 = 66 +: 44 +: newArr4 :+ 77 :+ 88 println(newArr5.mkString("-"))

二、可变数组
1、创建数组
//1、创建一个可变数组 val arr = new ArrayBuffer[Int]() //另一种 val arr1 = ArrayBuffer(1, 2, 3, 4, 5)
2、添加数组
//2、添加元素 val newArr = arr :+ 11 println(arr) println(newArr) println(arr == newArr) println("----------") //原数组改变,在后面添加数据 val newArr2 = arr += 22 println(arr) println(newArr2) //他们指向的同一个引用,所以改变newArr也改变arr //true println(newArr2 == arr) newArr2 += 33 println(arr) println("-------") //在前加 44 +=: arr println(arr) println(newArr2)

添加的简便方法:
//调用方法添加,在后添加 arr.append(55, 66, 77)
//在前添加 arr.prepend(88, 99)
//任意位置添加, 在一索引位置添加12,13 arr.insert(1, 12, 13)
//在任意位置添加一个数组 arr.insertAll(1, newArr)
//在后添加一个数组 arr.appendAll(newArr2)
//在前添加一个数组 arr.prependAll(newArr2)
3、删除元素
//4、删除元素 arr.remove(3) println(arr) //从索引1到10删除 arr.remove(1, 35) println(arr) //删除指定的数 arr -= 88 println(arr)

三、可变转换为不可变数组
//5、可变数组转换为不可变数组 val arr2 = ArrayBuffer(11, 22, 33) //转换为不可变数组的方法 val newArr3 = arr2.toArray println(newArr3.mkString(", ")) println(arr2)

四、不可变转换为可变
//6、不可变转换为可变数组 val buffer = newArr3.toBuffer println(buffer)

五、多维数组
1、创建二维数组,2行3列
val array = Array.ofDim[Int](2, 3)
2、访问元素
(1)赋值
array(0)(2) = 1
array(1)(1) = 2
(2)遍历
for (i <- 0 until array.length; j <- 0 until array(i).length){ println(array(i)(j)) } println("------------")
//用indices for (i <- array.indices; j <- array(i).indices){ print(array(i)(j) + "\t") if (j == array(i).length-1) println() }

(3)用foreach遍历
array.foreach(line => line.foreach(println)) //简化,如果是三维的array.foreach(_.foreach(_.foreach(println))),同理可推更高维的数组遍历 array.foreach(_.foreach(println))

浙公网安备 33010602011771号