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 ...
随机推荐
- SQL Server In-Memory OLTP Internals for SQL Server 2016
SQL Server In-Memory OLTP Internals for SQL Server 2016 这份白皮书是在上一份<SQL Server In-Memory OLTP Inte ...
- linux shell命令之wc/split及特殊字符
[时间:2018-07] [状态:Open] [关键词:linux, wc, split, 通配符,转义符,linux命令] 0 引言 整理这篇文章的目的不是为了什么学习,仅仅是为了强化下记忆,以便下 ...
- [转]$.post() 和 $.get() 如何同步请求
原文地址:https://blog.csdn.net/sunnyzyq/article/details/78730894 由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求, ...
- WEB API Filter的使用以及执行顺序
在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...
- Python threading 多参数传递方法
今天开启线程传递参数的时候,出现了一个小问题,一直不能传递多个参数,如下 import threading thread1 = threading.Thread(target=fun, args=[1 ...
- spring boot与kafka
1.项目搭建 2.关键代码与配置 3.性能调优 注意,本项目基于spring boot 1,如果是spring boot 2有可能会报错.相应的包需要更新 1.项目搭建 kafka版本:kafka_2 ...
- Zend Optimizer,Zend Guard Loader 和 Zend Opcache 三者之间的区别
PHP的加速插件有三个:Zend Optimizer.Zend Guard Loader 和 Zend Opcache.但其实都是一个,针对不通的php版本.名字叫法不一样而已. Zend Optim ...
- 【Android Studio】Gradle配置及问题解决
Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after ...
- 使用react-navigation提示undefind is not a function
在学习react-natrive的时候,看到导航跳转一章,遂试了一下demo: 但是呢,在安卓模拟器上却报错了: 找了许多方法,包括降低版本都不行,后来修改了一下导出就可以了:
- [原]Jenkins(十八) jenkins再出发之jenkins 内置变量
1.选择一个project的config选项: 2.选择build选项卡,选择Execute Windows batch command 3.会出现一个内置变量的list 连接按钮: 4.list表内 ...