定长数组,所有元素初始化为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("<",">")

results matching ""

    No results matching ""