您的位置:首页 > 其它

scala学习第六天

2017-02-26 00:00 183 查看
package com.learn.scala

import scala.collection.mutable.ArrayBuffer

/**
* scala学习第六天
* Created by zhuqing on 2017/2/26.
*/
object Day6Array {
def main(args: Array[String]): Unit = {

/**
* 数组的变遍,可以像Java中Foreach 那样逐个遍历,可以按位置遍历
*/
for (a <- this.createArray()) {
print(a + " ")
}
println()
for (a <- this.createArrayBuffer()) {
print(a + " ")
}
println()
val arr = this.createArray()

// 0 until 10 ,是0到9的区间Range , 不包含10
for (i <- 0 until arr.length) {
print(arr(i) + " ")
}
println()
val arrayBuffer = this.createArrayBuffer()
for (i <- 0 until arr.length) {
print(arr(i) + " ")
}
println()
//生成带步长的区间
println(0 until(arr.length, 2)) //打印Range(0, 2, 4, 6, 8), 步长为2
for (i <- 0 until(arr.length, 2)) {
print(arr(i) + " ") //打印1 3 5 7 9
}
println()
//区间的翻转 ,reverse是GenSeqLike的方法,实现了它的集合都有这样的功能
//关于Range的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Range.html
println(0 until arr.length reverse) //Range(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)

/**
* 数组的转换,可以使用for循环的yield,
*/
//去数组arr的偶数位的数并乘以2
val arrNew = for (i <- 0 until(arr.length, 2)) yield arr(i) * 2
//数组 yield后成为Vector
println(arrNew.getClass); //打印class scala.collection.immutable.Vector
//toArray转换为Array,toArray是特质GenTraversableOnce中的方法
//Vector的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Vector.html
println(arrNew.toArray.mkString(" ")); //2 6 10 14 18

/**
* 数组的另一种转换,是使用自带的Map方法
*/
//与上面的功能相似
val arrNew2 = arr.filter((a: Int) => {
a % 2 != 0
}).map((a: Int) => {
a * 2
})
println(arrNew2.mkString(" ")); //2 6 10 14 18
//与上面的功能一样,scala中的lambda可以比Java中的更简单一些,如下面"_"表示参数
val arrNew3 = arr.filter(_%2!=0).map(_*2);
println(arrNew3.mkString(" ")); //2 6 10 14 18

/**
* 数组还有一些常用的算法,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可以自己比较最大值
//前面的遍历数组打印,可以这样实现
println(arr mkString(" "))
}

/**
* 创建一个1到10的ArrayBuffer
*
* @return
*/
def createArrayBuffer(): ArrayBuffer[Int] = {
ArrayBuffer[Int](1 to 10: _*)
}

/**
* 创建1到10的Array
*
* @return
*/
def createArray(): Array[Int] = {
Array[Int](1 to 10: _*)
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Scala