zoukankan      html  css  js  c++  java
  • Scala学习(三)练习

    Scala数组相关操作&练习

    1. 1. 编写一段代码,将a设置为一个包含n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间

    def main (args: Array[String]) {
      createArr(10).foreach(println)
    }
    def createArr(n:Int):Array[Int]={
      val arr=new Array[Int](n)
      val rand=new Random()
      for(ele <- arr)
        yield rand.nextInt(n)
    }

    2. 编写一个循环,将整数数组中相邻的元素置换。例如,Array(1,2,3,4,5) 经过置换后变为Array(2,1,4,3,5)

    def main (args: Array[String]) {
      val a=Array(1,2,3,4,5)
      Swap(a)
      a.foreach(print)
    }
    def Swap(arr:Array[Int]):Unit={
      for(i <- 0 until (arr.length-1,2)){
        val tmp=arr(i)
        arr(i)=arr(i+1)
        arr(i+1)=tmp
      }
    }

    3. 重复前一个练习,不过这一次生成一个新的值交换过的数组。用for/yield

    def main (args: Array[String]) {
      val a=Array(1,2,3,4,5)
      val b=SwapYield(a)
      b.foreach(print)
    }
    def SwapYield(arr:Array[Int])={
      for(i <- 0 until arr.length) yield {
        if (i<(arr.length-1) && i%2==0){
          val tmp=arr(i)
          arr(i)=arr(i+1)
          arr(i+1)=tmp
        }
        arr(i)
      }
    }

    4. 给定一个整数数组,产出一个新的数组,包含元数组中的所有正值,以原有顺序排列,之后的元素是所有零或负值,以原有顺序排列

    def main (args: Array[String])= {
      val a=Array(1,-2,0,-3,1,2)
      val b=sigArr(a)
      b.foreach(println)
    }
    def sigArr(arr:Array[Int])={
      val buff=new ArrayBuffer[Int]()
      buff++=(for(ele <- arr if ele>0) yield ele)
      buff++=(for(ele <- arr if ele==0) yield ele)
      buff++=(for(ele <- arr if ele<0) yield ele )
      buff.toArray
    }

    5. 如何计算Array[Double]的平均值

    def main (args: Array[String])= {
      val a=Array[Double](1,4,2,10,3,-1,-3)
      val b=Avgarr(a)
      println(b)
    }
    def Avgarr(arr:Array[Double])={
      arr.sum/arr.length
    }

    6. 如何重新组织A r r a y [ I n t ] 的元素将它们以反序排列,对于ArrayBuffer[Int]你又会怎么做呢

    def main (args: Array[String])= {
      val a=Array(5,4,3,2,1)
      resverseArr(a)
      a.foreach(println)

      //ArrayBuffer反转
      val b=ArrayBuffer(1,2,3,4,5)
      val c=ArrayBuffer[Int]()
      c++=b.reverse
      c.foreach(println)
    }

    def resverseArr(arr:Array[Int]) {
      val len=arr.length
      for(i <- 0 until len/2){
        val tmp=arr(i)
        arr(i)=arr(len-1-i)
        arr(len-1-i)=tmp
      }
    }

    7. 编写一段代码,产出数组中的所有值,去掉重复项。(提示:查看Scaladoc)

    def main (args: Array[String])= {
      val a=ArrayBuffer(1,2,2,23,3,4,5,6,3)
      val b=ArrayBuffer[Int]()
      b++=a.distinct
      b.foreach(println)
    }

    8. 收集负值元素的下标,反序,去掉最后一个下标,然后对每一个下标调用a.remove(i)。

    def main (args: Array[String])= {
      val a=Array(1,-2,3,4,5,-1,-3,-4)
      val b= delRevFirst(a)
      b.foreach(println)
    }

    def delRevFirst(arr:Array[Int])={
      val indexs=for(i <- 0 until arr.length if arr(i)<0) yield i
      val dropindexs=indexs.reverse.dropRight(1)
      val tmp=arr.toBuffer
      for(index <- dropindexs)
        tmp.remove(index)
      tmp
    }

    9. 创建一个由Java.util.TimeZone.getAvailableIDs返回的时区集合,判断条件是它们在美洲。去掉"America/"前缀并排序

    def main (args: Array[String])= {
      val a=TimeZone()
      a.foreach(println)
    }
    def TimeZone()={
      val arr=java.util.TimeZone.getAvailableIDs()
      val tmp=for(ele <-arr if ele.startsWith("America/")) yield {
        ele.drop("America/".length)
      }
      scala.util.Sorting.quickSort(tmp)
      tmp
    }

    10. 引入java.awt.datatransfer._并构建一个类型为SystemFlavorMap类型的对象

    def main (args: Array[String])= {
      val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap]
      println(flavors.getNativesForFlavor(DataFlavor.imageFlavor).toArray.toBuffer.mkString(" | "))
    }

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    数据中心基础
    云计算基础
    C++ 沉思录 ——句柄——智能指针改写
    Linux 网卡驱动相关——02
    读书笔记(三):【SQL Server 2005 Performance Tuning性能调校】(1):【性能调校概观】
    SQL Server 索引中include的魅力(具有包含性列的索引)
    Flex编程
    ZedGraph使用经验
    Firefox 扩展插件推荐
    读书笔记(三):【SQL Server 2005 Performance Tuning性能调校】(0):【开篇】
  • 原文地址:https://www.cnblogs.com/sunddenly/p/4418601.html
Copyright © 2011-2022 走看看