Scala中Array的使用

Scala Array与ArrayBuffer详解
本文介绍了Scala中Array和ArrayBuffer的基本用法,包括初始化、元素添加与删除、合并及排序等常见操作,并对比了两者之间的主要区别。

总共分为Array和ArrayBuffer,这里的操作参数很多,很难说的完整,这里就说几个常用的。建议先看博客中的List的部分,因为Array这一部分很多都是一样的。

Array

  • 初始化
scala> val a=Array(1,2,3)
a: Array[Int] = Array(1, 2, 3)
  • 尾部添加元素
scala> a:+(4)
res100: Array[Int] = Array(1, 2, 3, 4)

scala> a.:+(4)
res101: Array[Int] = Array(1, 2, 3, 4)
  • 首端加入元素
scala> a.+:(0)
res105: Array[Int] = Array(0, 1, 2, 3)
  • 合并
scala> a++:Array(4,5,6)
res104: Array[Int] = Array(1, 2, 3, 4, 5, 6)
  • 删除元素
scala> a.drop(2)
res107: Array[Int] = Array(3)

scala> a.dropRight(2)
res108: Array[Int] = Array(1)
  • 排序
scala> a.sorted.reverse
res111: Array[Int] = Array(3, 2, 1)

ArrayBuffer

  • 初始化
scala> val a=ArrayBuffer(1,2,3)
a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

-尾端加元素

scala> a+=(4)
res112: a.type = ArrayBuffer(1, 2, 3, 4)
  • 首端加元素
scala> 0+:(a)
res113: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 2, 3, 4)
  • 删除元素
scala> a.drop(2)
res114: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(3, 4)
scala> a.dropRight(2)
res116: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2)

scala>
  • 排序
scala> a.sorted
res117: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)

scala>

其中关于Array和ArrayBuffer的区别的话,还是一样吧,都是效率问题

Scala 中,`Array` 是一种基础的数据结构,用于存储固定大小的相同类型元素。以下是关于 `Array` 的使用指南。 ### 创建数组 可以通过多种方式创建数组: ```scala // 显式声明并初始化数组 val numbers = Array(1, 2, 3, 4, 5) // 使用 new 关键字指定数组大小,并默认初始化为0 val zeros = new Array[Int](5) // 创建字符串数组 val words = Array("hello", "world") ``` ### 访问数组元素 数组索引从0开始,可以使用索引来访问数组中的元素: ```scala val firstElement = numbers(0) // 获取第一个元素 numbers(0) = 10 // 修改第一个元素 ``` ### 遍历数组 可以使用 for 循环来遍历数组的所有元素: ```scala for (num <- numbers) { println(num) } ``` ### 多维数组 Scala 支持多维数组,例如二维数组可以这样创建和操作: ```scala // 创建一个二维数组 val matrix = Array.ofDim[Int](2, 3) // 2行3列 // 初始化二维数组 matrix(0)(0) = 1 matrix(0)(1) = 2 matrix(0)(2) = 3 matrix(1)(0) = 4 matrix(1)(1) = 5 matrix(1)(2) = 6 // 转置二维数组 val transposedMatrix = matrix.transpose[^2] ``` ### 常用操作 #### 合并数组 可以使用 `++` 操作符或 `concat` 方法来合并两个数组: ```scala val array1 = Array(1, 2) val array2 = Array(3, 4) val combinedArray = array1 ++ array2 // 或者使用 Array.concat(array1, array2) ``` #### 扁平化数组 如果有一个二维数组并且想要将其转换成一维数组,可以使用 `flatten` 方法: ```scala val darr = Array(Array(1, 2, 3), Array(4, 5, 6)) val flatArray = darr.flatten // 结果是 Array(1, 2, 3, 4, 5, 6)[^1] ``` #### 折叠操作 折叠是一种累积处理数组中所有元素的操作。`fold`, `foldLeft`, 和 `foldRight` 都是用来进行这种操作的方法。它们之间的区别在于累积的方向不同: - `foldLeft` 从左到右累积。 - `foldRight` 从右到左累积。 - `fold` 则是并行友好的,通常用于可交换操作。 下面是一个简单的例子: ```scala val nums = Array(1, 2, 3, 4, 5) // 使用 foldLeft 来计算总和 val sumLeft = nums.foldLeft(0)(_ + _) // 使用 foldRight 来连接字符串 val joinedStrings = Array("a", "b", "c").foldRight("")(_ + _) ``` 请注意,在使用 `fold` 时需要确保初始值以及累积函数的设计能够正确地支持并行处理。 ### 总结 以上就是 Scala 中 `Array` 的一些基本用法。通过这些方法,您可以有效地管理和操作数组数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值