算法
scala数组
# Scala中的数组 ## 定长数组 - 声明一个长度为10的整形数组: ```scala val arr = Array[Int](10)
变长数组(即数组缓冲)
- import collection.mutable.ArrayBuffer
- 声明一个空的ArrayBuffer:
val arrbuff1 = ArrayBuffer[Int]()
- 初始化并添加元素:
val arrBuff2 = ArrayBuffer(1, 3, 4, -1, -4)
- 添加单个或多个元素:
arrbuff1 += 23 arrbuff1 += (2, 3, 4, 32) arrbuff1 ++= arrBuff2 arrbuff1 ++= Array(2, 43, 88, 66)
- 移除元素:
arrbuff1.trimEnd(2) arrbuff1.remove(2) arrbuff1.remove(2, 4)
- 转换为普通数组或缓冲:
val arr = arrbuff1.toArray val arrbuff2 = arr.toBuffer
遍历数组和数组缓冲
- 使用
for循环遍历:for(i <- 0 until arrbuff1.length) yield arrbuff1(i) * 2 for(i <- 0 until (arrbuff1.length, 2)) yield arrbuff1(i) * 2 for(elem <- arrbuff1) print(elem) for(i <- arrbuff1 if arrbuff1 > 0) print(i)
- 使用
filter和map生成新集合:arrbuff1.filter(_ > 0).map{ 2 * _} arrbuff1.filter {_ > 0} map {2 * _}
常用算法
- 求和:
arrbuff1.sum
- 求最大元素:
Array("asd", "sdf", "ss").max
- 排序:
arrbuff1.sorted(_ < _) arrbuff1.sorted(_ > _)
- 数组排序:
util.Sorting.quickSort(Array)
多维数组
Scala数组和Java互操作
- 引入
scala.collection.JavaConversion在代码中使用Scala缓冲。 - 调用Java方法时,自动包装成Java列表。
- 反过来讲,引入
scala.collection.asScalaBuffer,当Java方法返回java.util.List时,可以转换成一个Buffer。