scala学习第六天
scala学习第六天
我是菜鸟我骄傲 发表于9个月前
scala学习第六天
  • 发表于 9个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

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
共有 人打赏支持
粉丝 10
博文 183
码字总数 100940
×
我是菜鸟我骄傲
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: