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】。

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

Scala学习(三)练习的更多相关文章

  1. Scala学习(三)----数组相关操作

    数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...

  2. Scala学习三——数组相关操作

    一.若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 固定长度数组: 如val nums=new Array[Int](10) //10个整型数组,所有元素初始化为0; val ...

  3. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

  4. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  5. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  6. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  7. Scala学习资源

    Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...

  8. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  9. TweenMax动画库学习(三)

    目录               TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)           ...

随机推荐

  1. Android--判断listview上下滑动的方法

    elv_music_res_fragment.setOnScrollListener(new AbsListView.OnScrollListener() { private int mLastFir ...

  2. c#事务处理(sqlTransaction)

    事务: /// <summary> /// 删除考勤 /// </summary> /// <param name="dto">Id</p ...

  3. python 报错RuntimeError: dictionary changed size during iteration

    a = {':0} for b in list(a.keys()): if a[b] == 0: del a[b] print(a) 报错是因为在字典迭代期间改变字典大小 我们可以通过取出字典的键值, ...

  4. 使用parted创建gpt大分区例子

    [root@VM000000518 ~]# parted /dev/xvde GNU Parted 2.1 Using /dev/xvde Welcome to GNU Parted! Type 'h ...

  5. 17秋 软件工程 团队第五次作业 Alpha Scrum6

    17秋 软件工程 团队第五次作业 Alpha Scrum6 今日完成的任务 世强:APP内通知消息发送; 港晨:APP前端登陆界面编写: 树民:Web后端数据库访问模块代码实现: 伟航:Web后端Re ...

  6. CorelDRAW(cdr) 2018安装教程详解

    令人期待的coreldraw2018最新版已经发布了,相信各位设计从业者已经迫不及待想要知道这次版本会带来什么新的东西,本次小编带来的coreldraw2018破解版,附有注册补丁,激活之后可以永久免 ...

  7. <20190102>收录些比较低级错误导致的主板故障现象

    今天收录俩个比较低级的错误. 故障现象:   水冷排风扇高速运转, 并无法调控. 现在CPU散热的水冷排都设计了三条线,   温控4Pin , 水泵线 3Pin  , 接在机箱上USB口取电的灯线或者 ...

  8. 用Promise解决多个异步Ajax请求导致的代码嵌套问题【转】

    问题 前端小同学在做页面的时候,犯了个常见的错误:把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的.如下面的代码所示: var someData; $.ajax({ u ...

  9. Windows安装PostgreSQL11.1

    Windows安装PostgreSQL11.1 安装过程如下: 1.下载安装包postgresql-11.1-1-windows-x64.exe 2.点击下一步 3.选择安装位置,默认路径C:\Pro ...

  10. centos7下安装docker(10容器底层--cgroup和namespace)

    cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...