第三章 数组¶
定长数组¶
如果需要一个长度不变的数组,可以使用scala中的Array。
遍历数组和数组缓存¶
使用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).sorted(_ < _)
显示数组内容
a.mkString
a.mkString(" and ")
a.mkString("<",",",">")
多维数组¶
val matrix = Array.ofDim[Double](3,4)