packagecom.learn.scala
importscala.collection.mutable.ArrayBuffer
/**
* scala學(xué)習(xí)第六天
* Created by zhuqing on 2017/2/26.
*/
objectDay6Array {
defmain(args: Array[String]): Unit = {
/**
* 數(shù)組的變遍局嘁,可以像Java中Foreach 那樣逐個(gè)遍歷茬缩,可以按位置遍歷
*/
for(a <-this.createArray()) {
print(a +" ")
}
println()
for(a <-this.createArrayBuffer()) {
print(a +" ")
}
println()
valarr =this.createArray()
// 0 until 10 ,是0到9的區(qū)間Range , 不包含10
for(i <-0until arr.length) {
print(arr(i) +" ")
}
println()
valarrayBuffer =this.createArrayBuffer()
for(i <-0until arr.length) {
print(arr(i) +" ")
}
println()
//生成帶步長的區(qū)間
println(0until(arr.length,2))//打印Range(0, 2, 4, 6, 8)炸裆, 步長為2
for(i <-0until(arr.length,2)) {
print(arr(i) +" ")//打印1 3 5 7 9
}
println()
//區(qū)間的翻轉(zhuǎn) ,reverse是GenSeqLike的方法亚脆,實(shí)現(xiàn)了它的集合都有這樣的功能
//關(guān)于Range的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Range.html
println(0until arr.length reverse)//Range(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
/**
* 數(shù)組的轉(zhuǎn)換祷肯,可以使用for循環(huán)的yield,
*/
//去數(shù)組arr的偶數(shù)位的數(shù)并乘以2
valarrNew =for(i <-0until(arr.length,2))yieldarr(i) *2
//數(shù)組 yield后成為Vector
println(arrNew.getClass);//打印class scala.collection.immutable.Vector
//toArray轉(zhuǎn)換為Array,toArray是特質(zhì)GenTraversableOnce中的方法
//Vector的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Vector.html
println(arrNew.toArray.mkString(" "));//2 6 10 14 18
/**
* 數(shù)組的另一種轉(zhuǎn)換市框,是使用自帶的Map方法
*/
//與上面的功能相似
valarrNew2 = arr.filter((a: Int) => {
a %2!=0
}).map((a: Int) => {
a *2
})
println(arrNew2.mkString(" "));//2 6 10 14 18
//與上面的功能一樣霞扬,scala中的lambda可以比Java中的更簡單一些,如下面"_"表示參數(shù)
valarrNew3 = arr.filter(_%2!=0).map(_*2);
println(arrNew3.mkString(" "));//2 6 10 14 18
/**
* 數(shù)組還有一些常用的算法,sum,max,min,sort , mkString:拼接成字符串
* 可以參考API:http://www.scala-lang.org/api/current/scala/Array.html
* http://www.scala-lang.org/api/current/scala/collection/mutable/ArrayBuffer.html
*/
println(arr sum)//arr的和
println(arr max)//arr的最大值枫振,maxBy可以自己比較最大值
//前面的遍歷數(shù)組打印喻圃,可以這樣實(shí)現(xiàn)
println(arr mkString(" "))
}
/**
* 創(chuàng)建一個(gè)1到10的ArrayBuffer
*
*@return
*/
defcreateArrayBuffer(): ArrayBuffer[Int] = {
ArrayBuffer[Int](1to10: _*)
}
/**
* 創(chuàng)建1到10的Array
*
*@return
*/
defcreateArray(): Array[Int] = {
Array[Int](1to10: _*)
}
}