在本章中,你将会学到如何在Scala中操作数组。
开始用数组。 本章的要点包括:
1.若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer。
2.提供初始值时不要使用new。
3.用()来访问元素。
4.用for (elem <- arr)来遍历元素。
5.用for (elem<- arr if ... ) yield ...来将原数组转型为新数组。
6.Scala数组和Java数组可以互操作;
7.用ArrayBuffer,使用scala.collection.
8.JavaConversions中的转换函数。
定长数组
val nums = new Array[Int] (10)
10个整数的数组,所有元素初始化为0
变长数组:数组缓冲
val b = ArrayBuffer [Int] ()
//或者new ArrayBuffer[Int]
// 一个空的数纽缓冲,准备存放整数
b += 1
II ArrayBuffer(l)
// 用+=在尾端添加元素
b += ( 1, 2 , 3 , 5)
//ArrayBuffer(l, 1 , 2, 3, 5) // 在尾端添加多个元素, 以括号包起来
b ++= Array(S, 13, 21)
// Arr ‘ayBuffer (1, 1, 2, 3, 5, 8, 13, 21)
// 你可以用++=操作符追加任何集合
b.trimEnd(S)
//ArrayBuffer(l, 1, 2) //移除最后5个元素
常用算法
Array(l , 7 , 2, 9) . sum
ArrayBuffer (” Mary'’,”had”,”a ”,”little ”,”lamb” ) .max
val b = ArrayBuffer(l, 7, 2, 9)
val bSorted = b.sorted
// b没有被改变; bSorted是ArrayBuffer(l , 2 , 7 , 9)
//你还可以提供一个比较函数,不过这时你应该用sortWith方法:
val bDescending = b . sortWith( > )// ArrayBuffer(9, 7 , 2 , 1) ```
###多维数组
和Java一样,多维数组是通过数组的数组来实现的。 举例来说, Double的二维数 组类型为Array[Array[Double]] 。 要构造这样一个数组,可以用ofDim方法:
val matrix = Array.ofDim[Double] (3 , 4) // 三行四列
要访问其中的元素,可使用两对圆括号:
matrix(row) (column) = 42
网友评论