掌握数组的增、删、改、查操作

数组类型

  • Array:定长数组
  • ArrayBuffer:变长数组
  • Array.ofDim():多维数组

    定长数组

    创建定长数组的两种方式
  1. 使用 new 关键字
    1. 语法:var | val 变量名 = new Array类型
    2. 访问:变量名(索引值)【注意:元素值默认为0】
  2. 使用 apply 方法

    1. 语法:var | val 变量名 = Array(实参列表)
    2. 访问:同上 ```scala object ArrayDemo { def main(args: Array[String]): Unit = { plainArray() }

    def plainArray(): Unit = { // 方式1:new val arr1 = new ArrayInt arr1(2) = -12 // 赋值 for (item <- arr1) { // 遍历 print(item + “ “) } println(s”【数组长度:${arr1.length},每个元素的初始值:${arr1(0)}】”)

    // 方式2:apply val arr2 = Array(“haha”, 123 true) // 初始化数组,存放的数据类型是Any for (index <- 0 until arr2.length) { print(arr2(index) + “ “) } } } ```

    变长数组

    ArrayBuffer 类似于 Java 中的 ArrayList,它也有两种创建方式,具体看下面的代码案例
    append 方法原理:在底层会自动分配初始化空间,当容量不够时自动扩容,即创建一个新的变长数组 ```scala import scala.collection.mutable.ArrayBuffer

object ArrayDemo { def main(args: Array[String]): Unit = { arrayBuffer() }

def arrayBuffer(): Unit = { // 方式1:new val arr1 = new ArrayBufferInt arr1.append(99, 100, 101, 102) arr1.remove(1) for (ele <- arr1) { print(ele + “ “) } println()

  1. // 方式2:apply
  2. val arr2 = ArrayBuffer[String]("haha", "xixi")
  3. println(arr2.mkString(":"))

} }

  1. <a name="lssQH"></a>
  2. ## 多维数组
  3. ```scala
  4. object ArrayDemo {
  5. def main(args: Array[String]): Unit = {
  6. multiplyArray()
  7. }
  8. def multiplyArray(): Unit = {
  9. // 定义一个 2 行 3 列的二维数组
  10. val arr = Array.ofDim[Int](2, 3)
  11. arr(1)(1) = 22
  12. for (i <- 0 until arr.length) {
  13. for (j <- 0 until arr(i).length) {
  14. print(arr(i)(j) + " ")
  15. }
  16. println()
  17. }
  18. }
  19. }

数组转化

1)定长变长转换

转换时不会改变原数组,而是生成一个新的数组,作为结果返回

  • 定长 → 变长:toBuffer
  • 变长 → 定长:toArray

    2)与 Java 的 List 转换

  • ArrayBuffer → java.util.List【注意:必须是 String 类型】

  • java.util.List → ArrayBuffer ```scala // 1. ArrayBuffer -> java.util.List val arr = ArrayBufferString // 底层:使用隐式转换(ProcessBuilder 使用到了 bufferAsJavaList) import scala.collection.JavaConversions.bufferAsJavaList val javaArr = new ProcessBuilder(arr) val res: java.util.List[String] = javaArr.command() println(res) // res 是 Java 的 List 类型

// 2. java.util.List → ArrayBuffer val javaArr = new java.util.ArrayListInt javaArr.add(12) javaArr.add(13) import scala.collection.JavaConversions.asScalaBuffer import scala.collection.mutable.Buffer val arr: Buffer[Int] = javaArr arr.append(100) println(arr) ```