Ch03 数组相关操作 - 练习
1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间。
//import java.lang.Mathdef getArray(n:Int)={ val nums = new Array[Int](n) for(i <- 0 until nums.length){ nums(i) = (Math.random() * n).toInt } nums} getArray(10)//res18: Array[Int] = Array(5, 1, 6, 9, 0, 9, 6, 6, 8, 1)object App{ def main(args: Array[String]){ makeArr(10).foreach(println) } def makeArr(n:Int): Array[Int]={ val a = new Array[Int](n) val rand = new scala.util.Random() for(i <- a) yield rand.nextInt(n) }}object App{ def main(args: Array[String]){ val a = Array(1,2,3,4,5) exchangeArr(a).foreach(println) } def exchangeArr(a:Array[Int]):Array[Int]={ for(i <- 0 until a.length){ if(i % 2 == 0 && i != a.length -1){ val t = a(i) a(i) = a(i+1) a(i+1) = t } } a }}object App{ def main(args: Array[String]){ val a = Array(1,2,3,4,5) val b = revertYield(a) a.foreach(println) println b.foreach(println) } def revertYield(arr:Array[Int])={ for(i <- 0 until arr.length) yield { if(i % 2 == 0 && i != arr.length -1){ arr(i+1) }else if(i % 2 == 1 && i != arr.length -1){ arr(i-1) }else if(i % 2 == 0 && i == arr.length -1){ arr(i) }else{ arr(i-1) } } }}object App{ def main(args: Array[String]){ val a = Array(1,2,-3,-4,5,0) sortArr(a).foreach(println) } def sortArr(arr:Array[Int])={ val positiveIndexes = for(i <- 0 until arr.length if arr(i) >0 ) yield i val nonpositiveIndexes = for(i <- 0 until arr.length if arr(i) <= 0) yield i val newArr = new Array[Int](arr.length) for(i <- 0 until arr.length){ if(i < positiveIndexes.length) newArr(i) = arr(positiveIndexes(i)) else newArr(i) = arr(nonpositiveIndexes(i - positiveIndexes.length)) } newArr }}
object App{ def main(args: Array[String]){ val a = Array(1,2.0,-3,-4,5,0) println(average(a).toString) } def average(arr:Array[Double])={ arr.sum/arr.length }}//result: 0.16666666666666666 |
object App{ def main(args: Array[String]){ val a = Array(1,2,-3,-4,5) println(a.mkString("[",",","]")) println(reverseArray(a).mkString("[",",","]")) } def reverseArray(arr:Array[Int])={ for(i <- 0 until arr.length/2){ val t = arr(arr.length-1-i) arr(arr.length-1-i) = arr(i) arr(i) = t } arr }}/*result: [1,2,-3,-4,5][5,-4,-3,2,1]*/import scala.collection.mutable.ArrayBufferobject App{ def main(args: Array[String]){ val a = ArrayBuffer(1,2,-3,-4,5) println(a.mkString("[",",","]")) println(reverseArray(a).mkString("[",",","]")) } def reverseArray(arr:ArrayBuffer[Int])={ for(i <- 0 until arr.length/2){ val t = arr(arr.length-1-i) arr(arr.length-1-i) = arr(i) arr(i) = t } arr }}/*result: [1,2,-3,-4,5][5,-4,-3,2,1]*/object App{ def main(args: Array[String]){ val a = Array(6,2,2,6,7,5,2) println(a.mkString("[",",","]")) val b = a.distinct println(b.mkString("[",",","]")) }}/*result: [6,2,2,6,7,5,2][6,2,7,5]*/import scala.collection.mutable.ArrayBufferobject App{ def main(args: Array[String]){ var a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) var begin = System.currentTimeMillis() var b = ridAllNegativeButFirstA(a) var end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) println a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) begin = System.currentTimeMillis() b = ridAllNegativeButFirstB(a) end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) println a = ArrayBuffer(1,-2,3,-4,5,-6,7) println(a.mkString("[",",","]")) begin = System.currentTimeMillis() b = ridAllNegativeButFirstC(a) end = System.currentTimeMillis() println(end-begin) println(b.mkString("[",",","]")) } def ridAllNegativeButFirstA(a:ArrayBuffer[Int])={ var first = true var n = a.length var i = 0 while(i < n){ if(a(i) >= 0) i += 1 else{ if(first) { first = false; i += 1 } else { a.remove(i); n -= 1 } } } a } def ridAllNegativeButFirstB(a:ArrayBuffer[Int])={ var first = true val indexes = for(i <- 0 until a.length if first || a(i) >= 0) yield { if (a(i) < 0) first = false; i } for(j <- 0 until indexes.length) a(j) = a(indexes(j)) a.trimEnd(a.length - indexes.length) a } def ridAllNegativeButFirstC(a:ArrayBuffer[Int])={ val indexes = for(i <- 0 until a.length if a(i) < 0) yield i val seq = indexes.reverse.dropRight(1) for(i <- 0 until seq.length) a.remove(i) a } }/*result: [1,-2,3,-4,5,-6,7]5[1,-2,3,5,7][1,-2,3,-4,5,-6,7]4[1,-2,3,5,7][1,-2,3,-4,5,-6,7]3[-2,-4,5,-6,7]*/import scala.collection.mutable.ArrayBufferimport java.util.TimeZoneobject App{ def main(args: Array[String]){ val a = TimeZone.getAvailableIDs() val b = a.filter(_.startsWith("America/")) for(i <- 0 until b.length) b(i) = b(i).replace("America/","") b.foreach(println) }}/*result: AdakAnchorageAnguillaAntigua...*/ import scala.collection.JavaConversions.asScalaBufferimport scala.collection.mutable.Bufferimport java.awt.datatransfer._import java.util.TimeZoneobject App{ def main(args: Array[String]){ val flavors = SystemFlavorMap.getDefaultFlavorMap().asInstanceOf[SystemFlavorMap] val buffer = flavors.getNativesForFlavor(DataFlavor.imageFlavor) println(buffer) }}/*result[PNG, JFIF, DIB, ENHMETAFILE, METAFILEPICT]*/Ch03 数组相关操作 - 练习的更多相关文章
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- 快学Scala习题解答—第三章 数组相关操作
3 数组相关操作 3.1 编写一段代码.将a设置为一个n个随机整数的数组,要求随机数介于0(包括)和n(不包括)之间 random和yield的使用 import scala.math.rando ...
- scala 入门(2)--数组相关操作
scala 无论从数组的定义还是操作方面来说都跟java非常相似,但又有其独特的强大之处… 1. 定长数组 对于长度不变的数组,可以用scala中的Array. //scala 里使用new实例化对象 ...
- 快学Scala-第三章 数组相关操作
知识点: 1.定长数组 Array val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) / ...
- 【php】php数组相关操作函数片段
下面这些都是我在工作中用到的函数,现在整理下. 判断是否是一个数组 function _is_array($value){ if (is_array($value)) { return true; } ...
- linux awk数组相关操作介绍
用awk进行文本处理,少不了就是它的数组处理.那么awk数组有那些特点,一般常见运算又会怎么样呢.我们先看下以下的一些介绍,结合样例我们会解说下它的不同之处.在 awk 中数组叫做关联数组(assoc ...
- Shell数组相关操作
参考:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 创建数组 a=( ) 获得数组长度 ${#a[@]} #${#变量} ...
- Javascript 数组相关操作
数组排序问题: sort() arr.sort() 可以直接进行排序,但是排序的方式是按unicode 顺序而来,比如1,1000,200,这个顺序不是我们想要的结果: 所以有了另一种方法,针对num ...
- Scala学习三——数组相关操作
一.若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 固定长度数组: 如val nums=new Array[Int](10) //10个整型数组,所有元素初始化为0; val ...
随机推荐
- 20款最好的JavaScript开发框架
JavaScript语言有多种方式,创建交互式网站,Web应用程序.基本的JavaScript框架是预先写好的JavaScript代码集.这些JavaScript框架也被称为JavaScript库,开 ...
- Git Pro深入浅出(三)
七.自己定义Git 前面已经阐述了Git基本的运作机制和使用方式,介绍了很多Git提供的工具来帮助你简单且有效地使用它.本部分将演示怎样借助Git的一些重要的配置方法和钩子机制,来满足自己定义的需求. ...
- ASCII码与unicode字符集
问题1:为什么需要字符ASCII码.unicode码等等???它们到底有什么作用? 首先要明白一个事实:在计算机中只能用一系列存储着的0和1,当我们把一个字符存放在计算机时,我们是如何表示常用的字符呢 ...
- 同时安装anaconda2和anaconda3
安装的过程请参考 Ubuntu14.04下同时安装Anaconda2与Anaconda3 启动的时候cd到$HOME/anaconda2/envs/py3k/bin下 source activate ...
- 直播框架ijkplayer
直播框架ijkplayer [如何快速的开发一个完整的iOS直播app](播放篇) ijkplayer ios项目集成(图文详细版) 一步步搭建视频直播系统,基于LFLiveKit+ijkplayer ...
- Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...
- Serv-u 备份处理
需求分析 从删库到跑路,大家听过很多,但如果没删备份的话,那只能说玩的不够彻底,不专业.系统管理员一个非常重要的职责就是定期备份,以便在系统出现故障的时候能够及时恢复.我们来看下如何备份Serv-u系 ...
- Enterprise Craftsmanship
转自:http://enterprisecraftsmanship.com/2015/04/13/dto-vs-value-object-vs-poco/ DTO vs Value Object vs ...
- Linux ReviewBoard安装与配置
目录 0. 引言 1. 安装步骤 2. 配置站点 2.1 创建数据库 2.2 开始安装 2.3 修改文件访问权限 2.4 Web服务器配置 2.5 修改django相关配置 正文 回到顶部 0. 引言 ...
- Solve Error: Library not loaded: @rpath/RoutingHTTPServer.framework/RoutingHTTPServer
在配置WebDriverAgent的时候,可能会遇到如下的错误: 2018-01-04 09:53:42.759370-0600 WebDriverAgentRunner-Runner[318:133 ...