Scala数组操作:
1.定长数组
长度不变的数组的声明:
[java]
view plain
copy
val numArr = new Array[Int](10) val numArr = new Array[String](10) val s = Array("cai","yong") val s = Array("cai","yong") println(s(0)) s(0) = "haha" println(s(0))
输出:
cai
haha
2.变长数组:数组缓冲
Scala也支持长度变化的数组,支持的数据结构是ArrayBuffer
[java]
view plain
copy
val ab = ArrayBuffer[Int]() val ab2 = new ArrayBuffer[Int] ab += 2 ab += (1,2,3,4,5) ab ++= Array(6,7,8,9) ab.trimEnd(3) ab.insert(3, 33) ab.insert(3,3,4,5,6) ab.remove(3) ab.remove(n, count)
有时候需要构造一个Array,但是不知道具体要存放多少元素,可以先构造ArrayBuffer,再调用toArray方法转化成Array,同样,对Array调用toBuffer方法可以转成ArrayBuffer.
注:在数组缓冲的尾部进行元素添加移除操作的效率很高,但是在任意位置插入或移除元素的效率并不太高效,因为涉及到数组元素的移动。
3.遍历数组
[java]
view plain
copy
for(i <- 0 until ab.length){ print(ab(i) + ", ") } for(i <- 0 until (ab.length, 2)){ print(ab(i) + ", ") } for(i <- (0 until ab.length).reverse){ print(ab(i) + ", ") } for(elem <- ab){ print(elem + ", ") }
4.数组转换
[java]
view plain
copy
val change = for(elem <- ab) yield elem * 2 for(elem <- change){ print(elem + ", ") } val change = for(elem <- ab if elem%2 == 0) yield elem * 2
5.数组操作常用算法
[java]
view plain
copy
println(change.sum) println(change.min) println(change.max) val sortArr = ab.sorted for(elem <- sortArr) print(elem + ", ") val sortArr = ab.sortWith(_>_) println(sortArr.mkString("|")) println(sortArr.mkString("startFlag","|","endFlag"))
6.多维数组
[java]
view plain
copy
val arr = Array.ofDim[Int](2,3) println(arr.length) println(arr(0).length) arr(0)(0) = 20 println(arr(0)(0)) val arr = new Array[Array[Int]](3) for(i <- 0 until arr.length){ arr(i) = new Array[Int](i + 2) } for(i <- 0 until arr.length){ println(arr(i).length) }
*****************以上内容摘自:《快学Scala》 [美]Cay S. Horstmann著 电子工业出版社****************
转载请注明原文地址: https://www.6miu.com/read-2603265.html