快速学习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)
上一篇下一篇

猜你喜欢

热点阅读