快速学习Scala之数组
2018-09-28 本文已影响0人
固安李庆海
Array
在Scala中,Array代表的含义与Java中类似,也是长度不可改变的数组。此外,由于Scala与Java都是运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java数组。
创建
val a = new Array[Int](10)
或者直接使用Array()创建数组,元素类型自动推断
val a = Array("hello", "world")
赋值
使用 数组名称(index) = value 形式进行赋值,index从0开始,如
a(0) = 1
使用
使用 数组名称(index)形式访问数组元素,index从0开始
val tmp = a(0)
使用for循环和until进行遍历
//跳跃遍历Array
for(i <- 0 until (a.length, 2))
println(a(i))
//从尾部遍历Array
for(i <- (0 until a.length).reverse)
println(a(i))
// 使用“增强for循环”遍历Array
for (e <- a)
println(e)
数组元素求和
val sum = a.sum
获取数组最大值
val max = a.max
对数组进行排序
scala.util.Sorting.quickSort(a)
ArrayBuffer
在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer,使用时需要预先导入ArrayBuffer类
import scala.collection.mutable.ArrayBuffer。
创建
使用ArrayBuffer()的方式可以创建一个空的ArrayBuffer
val ab = ArrayBuffer[Int]()
赋值
使用+=操作符添加或者多个元素;使用++=操作符添加其他集合中的所有元素。
b += 1
b += (2, 3, 4, 5)
b ++= Array(6, 7, 8, 9, 10)
使用
使用trimEnd()函数,可以从尾部截断指定个数的元素
b.trimEnd(5)
使用insert()函数可以在指定位置插入元素,但是这种操作效率很低,因为需要移动指定位置后的所有元素
//在指定位置插入一个元素
b.insert(5, 6)
//在指定位置插入多个元素
b.insert(6, 7, 8, 9, 10)
使用remove()函数可以移除指定位置的元素
b.remove(1)
b.remove(1, 3)
Array与ArrayBuffer互相进行转换
//ArrayBuffer 转为Array
ab.toArray
//Array转为ArrayBuffer
a.toBuffer
使用for循环和until进行遍历
//跳跃遍历ArrayBuffer
for(i <- 0 until (ab.length, 2))
println(b(i))
//从尾部遍历ArrayBuffer
for(i <- (0 until ab.length).reverse)
println(b(i))
// 使用“增强for循环”遍历ArrayBuffer
for (e <- ab)
println(e)
数组元素求和
val sum = ab.sum
获取数组最大值
val max = ab.max
对数组进行排序
scala.util.Sorting.quickSort(ab)