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 ...
随机推荐
- Mina简单的入门示例
Mina是Apache下的一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序.它提供了一个通过Java NIO在不同的传输协议上抽象的事件驱动的异步API,例如TCP/IP和 ...
- Linux进程资源占用分析
[时间:2018-03] [状态:Open] [关键词:linux, 进程,proc,top] 0 引言 最近在分析安卓程序上的monkey测试日志时发现,需要了解下Linux进程资源占用情况及其查看 ...
- layui form表单自定义sm格式
1. 新建以下sm样式,保存为layform_sm.css文件名,然后导入到layui.css的后面. .layui-input-sm,.layui-select-sm,.layui-textarea ...
- ROS工作空间和程序包创建
预备工作后面操作中我们将会用到ros-tutorials程序包,请先安装: $ sudo apt-get install ros-<distro>-ros-tutorials 将 < ...
- store.state
https://blog.csdn.net/qq_38658567/article/details/82847758
- Java编码常见的Log日志打印问题
前言 本文总结了作者在Java代码检视中遇到的一些关于日志打印的问题,并给出修改建议.因能力有限,难免存在错漏,欢迎指正. 一. 不规范的异常打印 使用slf4j日志组件时,logger.error( ...
- css特效 - 环形文字
记一次群友问题和回答: 下面这种效果,文字是动态的,不能使用图片的情况下,前端怎么实现? 一.插件实现: arctext.js 教程地址:实现文字平滑弯曲弧形效果的插件-arctext.js 二.原生 ...
- 将VSCode添加到右键
https://www.cnblogs.com/Rexcnblog/p/8046371.html https://www.jianshu.com/p/b49002fa10a7 @echo Off :S ...
- Cookiecutter: 更好的项目模板工具:(3)高级用法
本文中的Hook就是钩子,钩子就是Hook 使用生成前/生成后钩子脚本 你可以在项目生成之前和/或之后运行Python或Shell脚本. 像这样把它们放进Hook里: cookiecutter-som ...
- ASP.NET Core MVC+EF Core从开发到部署
笔记本电脑装了双系统(Windows 10和Ubuntu16.04)快半年了,平时有时间就喜欢切换到Ubuntu系统下耍耍Linux,熟悉熟悉Linux命令.Shell脚本以及Linux下的各种应用的 ...