定长数组,所有元素初始化为0
scala> val nums=new Array[Int](10)
nums: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
字符串数组,所有元素初始化为null
val s=new Array[String](10)
长度为2的字符串,类型是推断而出的
val s=Array("Hello","World")
对数组元素操作
s(0)="Goodbye"
变长数组
对于变长数组,Java有ArrayList,C++有vector,Scala中等效的数据结构为ArrayBuffer。
import scala.collection.mutable.ArrayBuffer
val b=ArrayBuffer[Int]()
添加元素
b+=1
添加多个元素
b+=(1,2,3,5)
追加集合
b++=Array(8,13,21)
移除最后5个元素
b.trimEnd(5)
在任意位置插入元素
b.insert(2,6)
插入任意多的元素
b.insert(2,7,8,9)
删除某个位置的元素
b.remove(2)
删除自某个位置开始的多个元素
b.remove(2,3)
将ArrayBuffer转化为Array
b.toArray
将Array转化为ArrayBuffer
a.toBuffer
遍历数组和数组缓冲
通过for循环遍历数组或数组缓冲
for(i<- 0 util a.length)
println(i+": "+a(i))
每两个元素一跳
0 util (a.length,2)
从数组尾端开始遍历
(0 util a.length).reverse
直接访问数组元素的遍历
for(elem <- a)
println(elem)
数组转换
从一个数组(或数组缓冲)出发,以某种方式对它进行转换,并不会修改原始数组,而会产生一个全新的数组
val a=Array(2,3,5,7,11)
val result=for(elem<-a)yield 2*elem
满足特定条件的元素
for(elem<-a if elem%2==0)yield 2*elem
数组操作
对数值数组求和
Array(1,7,2,9).sum
寻找最小值或最大值
ArrayBuffer("Mary","had","a","little","lamb").max
sorted方法对数组或数组缓冲排序,并返回新的数组或数组缓冲
val b=ArrayBuffer(1,7,2,9)
val bSorted=b.sorted(_<_)
scala提供工具方法可以直接对数组排序
val a=Array(1,7,2,9)
scala.util.Sorting.quickSort(a)
如果想要显示数组或数组缓冲的内容,可以使用mkString方法,并可以指定元素的分隔符
a.mkString(" and ")
a.mkString("<",">")