第四章 数组¶
定长数组¶
如果需要一个长度不变的数组,可以使用scala中的 Array
。
var z:Array[String] = new Array[String](3)
or
var z = new Array[String](3)
遍历数组和数组缓存¶
使用 for
循环遍历数组或者缓存:
for( i <- 0 until a.length)
println(i)
如果想每两个元素一跳,可以这样遍历:
0 until (a.length,2)
如果想从数组的尾端开始,遍历写法为:
(0 until a.length).reverse
数组转换¶
从一个数组出发,以某种方式对它进行转换,这些转换操作不会修改原数组,而是产生一个新的数组。
val a = Array(1,2,3,4)
val result = for(elem <- a) yield 2*elem
结果返回一个类型与原始集合相同的新集合。
我们也可以给转换增加过滤条件:
for(elem <- a if elem % 2 == 0) yield 2 * elem
注意原始集合并没有受到影响。
另一种做法是:
a.filter(_ % 2 == 0).map(2 * _)
甚至:
a.filter{ _ % 2 == 0 } map {2 * _}
常用算法¶
求和
Array(1,2,3).sum
最小值和最大值
Array(1,2,3).min
Array(1,2,3).max
排序
Array(5,2,1,4).sortWith(_ < _)
显示数组内容
a.mkString
a.mkString(" and ")
a.mkString("<",",",">")
多维数组¶
import Array._
object Demo {
def main(args: Array[String]) {
var myMatrix = ofDim[Int](3,3)
// build a matrix
for (i <- 0 to 2) {
for ( j <- 0 to 2) {
myMatrix(i)(j) = j;
}
}
// Print two dimensional array
for (i <- 0 to 2) {
for ( j <- 0 to 2) {
print(" " + myMatrix(i)(j));
}
println();
}
}
}