1. 定长数组
//10个长度的数组,所有元素初始化为0
val nums = new Array[Int](10)
//10个元素的字符串数组,所有元素初始化为null
val a = new Array[String](10)
//长度为2的Array(String)--类型是推断出来的,已提供初始值就不需要new
val s = Array("Hello","World")
//用()访问元素而不是[]
s(0) = "Goodbye"
2. 变长数组:数组缓冲
import scala.collection.mutable.ArrayBuffer
//一个空的数组缓冲,准备存放整数。
val b = ArrayBuffer[Int]()
//+=在尾端添加元素
b += 1
//在尾端添加多个元素,用括号包起来。
b += (1,2,3,4,5)
//用++=操作符追加任何集合
b ++= Array(5,6,7)
//移除最后5个元素
b.trimEnd(5)
//在小标2之前插入
b.insert(2,6)
//可以插入多个元素
b.insert(2,7,8,9)
//移除下标为2的元素
b.remove(2)
//第二个参数是移除多少个元素
b.remove(2,3)
3. 遍历数组和数组缓冲
- 利用下标来进行遍历
for (i <- 0 until a.length)
println(i + ": " + a(i))
- 不需要数组下标遍历
for (elem <- a)
println(elem)
总结一下:
其实两种遍历方式是一样的,只是第一种先生成了一个tuple然后转换成第二种形式。
4. 数组转换
利用for推到,不会改变原来的数组,只是产生了一个新的集合。
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
// 上述问题完全可以用map,和filter代替
val result = a.map(_ * 2)
val result2 = a.filter(_ % 2 == 0)
完美,看着真舒坦啊。