2.Scala数组

package scala

object ArrayTest {
  def main(args: Array[String]): Unit = {
    //1.定长数组Array
    //一种定长数组定义方式
    //复杂对象类型在数组定义时被初始化为null,数值型被初始化为0
    val numArr = new Array[Int](5)
    val strArr = new Array[String](5)
    //数组赋值
    strArr(0) = "First"
    // 另一种定长数组定义方式
    val strArr2 = Array("First","Second")
    
    //2.变长数组ArrayBuffer
    import scala.collection.mutable.ArrayBuffer
    val strArrVar = ArrayBuffer[String]()
    strArrVar += "Hello" //在尾部添加元素
    strArrVar += ("World","Yes!") //在尾部添加多个元素
    //++=用于向数组中追加内容,可以追加任何集合
    //追加Array数组
    strArrVar ++= Array("Wllcome","To","XueTuWuYou")
    //追加Array数组
    strArrVar ++= List("Welcome","To","School")
    //删除末尾n个元素
    strArrVar.trimEnd(3)
    //创建整型数组缓冲
    var intArrVar = ArrayBuffer(1,1,2,3)
    //在数组index=0位置插入元素6
    intArrVar.insert(0, 6)
    //在数组index=0位置插入元素7,8,9
    intArrVar.insert(0,7,8,9)
    //从index=0开始,删除4个元素
    intArrVar.remove(0,4)
    //转成定长数组
    var intArr = intArrVar.toArray
    
    //3.数组的遍历
    //to
    for(i <- 0 to intArrVar.length - 1) println(intArrVar(i))
    //until
    for(i <- 0 until intArrVar.length) println(intArrVar(i))
    //数组方式
    for(i <- intArrVar) println(i)
    //步长为2
    for(i <- 0 until (intArrVar.length,2)) println(intArrVar(i))
    //倒序
    for(i <- (0 until intArrVar.length)) println(intArrVar(i))
    
    //4.数组转换
    //缓冲数据转化后产生的仍然是缓冲数组
    var intArrVar2 = for(i <- intArrVar) yield i * 2
    //定长数组转换后产生的仍然是定长数组,原数组不变
    var intArrNoBuff = Array(1,2,3)
    var intArrNoBuff2 = for(i <- intArrNoBuff) yield i * 2
    //加过滤条件
    var intArrNoBuff3 = for(i <- intArrNoBuff if i >= 2) yield i * 2
    
    //5.数组操作中的常用算法
    val intArray = Array(1,2,3,4,5,6,7)
    println("sum:"+intArray.sum+" ,max:"+intArray.max)
    println("mkString:"+intArray.mkString("-"))
    println("mkString:"+intArray.mkString("<","-",">"))
    
    //6.多维数组
    var mulArr = Array(Array(1,2,3),Array(4,5))
    println(mulArr(0)(1))
    
  }
}

参考自:https://blog.youkuaiyun.com/column/details/scalalearning.html

### Scala 中 `Array` 的 `apply` 方法 在 Scala 中,`Array` 是一种固定大小的序列集合。通过 `apply` 方法可以从数组中获取特定索引位置上的元素[^1]。 #### 获取单个元素 下面展示如何利用 `apply` 方法访问数组中的某个具体元素: ```scala val numbers = Array(10, 20, 30, 40, 50) println(s"The element at index 2 is ${numbers.apply(2)}") // 输出 The element at index 2 is 30 ``` 这段代码创建了一个名为 `numbers` 的整型数组,并使用 `apply` 方法读取索引为 2 处的值(即第三个元素),结果为 30。 #### 结合其他函数一起工作 除了单独用于检索数据外,`apply` 还经常与其他高阶函数配合使用来处理复杂逻辑: ```scala val data = Array("apple", "banana", "orange") // 找到长度大于等于6的第一个字符串并打印出来 data.find(_.length >= 6).foreach(word => println(s"Found word with length>=6: $word")) ``` 在这个例子中虽然没有直接看到 `apply` 函数的应用,但实际上当调用像 `find()` 或者 `foreach()` 等方法时内部都会涉及到对各个元素的操作——这背后就依赖于 `apply` 来完成实际的数据存取操作。 #### 创建新数组 值得注意的是,在某些情况下也可以借助 `apply` 构造新的数组实例。不过这种方式更常见于可变集合类型如 `Buffer` 或者不可变类型的工厂方法里;对于基本类型的 `Array` 则通常采用字面量形式定义或通过 `ofDim` 工厂方法初始化。 ```scala import scala.collection.mutable.ArrayBuffer val buffer = ArrayBuffer[Int]() buffer += (1 to 5): _* // 添加一系列数值至缓冲区 println(buffer.toArray) // 将其转换成普通数组输出 [1,2,3,4,5] ``` 尽管上述示例主要展示了关于 `ArrayBuffer` 的应用,但是从中可以看出不同容器间相互转化的过程中同样离不开 `apply` 的作用机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值