Scala数组
数组是最常用的收集一系类元素的结构,其中定长数组我们使用Array,变长数组我们使用ArrayBuffer
1.创建定长数组
???
??? 定长数组的声明:
val a =new Array[Int](10)
??? 数组在声明的时候若对数组不给定值,
??? 我们也可以在声明的时候给定值(值的类型要相同),Scala可以自动的进行类型和长度的判断。
??? 例如:
?
val b=Array(1,7,2,8,3)
??? 那么Int型的数组将初始化为0
??? String型的数组将被初始化为null
??? 当然我们也可以通过下面这种方式连接两个定长数组创建一个新的数组,
?
??? 当时经过本人测试下面这种方式只能生成一个新的数组
???
val array = Array(1, 4, 2, 3) val combine =array ++ Array(1, 2)
???
??? 我们在遍历数组的时候可以使用for循环
??? 例如:
??
for (i <- b) { println(i) }
?
??? 当然我们也可以使用更高端一点(函数式)的打印方法
??
b.foreach(x => println(x))
?
? ? 我们也可以进行数组转换
??
for(elem <- b if elem %2==0) yield 2*elem
?
??? 结果将返回一个新的数组,意思是获得数组中的偶数并把该数乘以2组成一个新的数组
??? 当然我们也可以使用以下更加方便,这种是典型的函数编程方式
?
b.filter(_%2==0).map(_*2)
?
??? 甚至我们可以这样
??
b.filter{_%2==0}.map{_*2}
?
2.变长数组的使用
? ? ?? val C=new ArrayBuffer[T]()声明一个全空的数组,数组长度为0
?????? C+= e1 ??? ??? ??? 表示在数组尾部增加一个类型为T的元素e1? ??? ??? :ArrayBuffer(e1)
?????? C+=(e2,e3)??? ??? 表示在数组尾部增加一个类型为T的元素e2,e3??? :ArrayBuffer(e1,e2,e3)
?????? C++=Array(e2,e3)??? 表示在数组尾部增加集合Array(e2,e3)??? ??? ??? :ArrayBuffer(e1,e2,e3,e2,e3)
?????? C.trimEnd(1)??? ??? 表示移除最后一个元素??? ??? ??? ??? ??? ??? :ArrayBuffer(e1,e2,e3,e2)
3.数组的常用算法
??? 3.1 求和:???? b.sum
??? 3.2 求最大值: b.max
??????? 排序,不会对原数组进行改变而是返回一个经过排序的数组:????
??????????????
b.sorted(_<_) b.sorted(_>_)
?
??? 3.3 当然我们也可以直接在原数组上进行排序,但是不能对数组缓冲排序(变长数组)
?????
scala.util.Sorting.quickSort(b)
?
??? 3.4 我们显示数组中的内容我们利用mkString方法
??????
b.mkString("<",",",">")
?
??????? 那么就会输出:
??????? <1,7,2,8,3>
?
?
?
原文:http://come-for-dream.iteye.com/blog/2156776