数组类型
- 使用 new 关键字
- 语法:var | val 变量名 = new Array类型
- 访问:变量名(索引值)【注意:元素值默认为0】
使用 apply 方法
- 语法:var | val 变量名 = Array(实参列表)
- 访问:同上 ```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()
// 方式2:apply
val arr2 = ArrayBuffer[String]("haha", "xixi")
println(arr2.mkString(":"))
} }
<a name="lssQH"></a>
## 多维数组
```scala
object ArrayDemo {
def main(args: Array[String]): Unit = {
multiplyArray()
}
def multiplyArray(): Unit = {
// 定义一个 2 行 3 列的二维数组
val arr = Array.ofDim[Int](2, 3)
arr(1)(1) = 22
for (i <- 0 until arr.length) {
for (j <- 0 until arr(i).length) {
print(arr(i)(j) + " ")
}
println()
}
}
}
数组转化
1)定长变长转换
转换时不会改变原数组,而是生成一个新的数组,作为结果返回
- 定长 → 变长:toBuffer
-
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) ```