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】。本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Scala学习(三)练习的更多相关文章
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- Scala学习三——数组相关操作
一.若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 固定长度数组: 如val nums=new Array[Int](10) //10个整型数组,所有元素初始化为0; val ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Scala学习资源
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...
- HTTP学习三:HTTPS
HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...
- TweenMax动画库学习(三)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) ...
随机推荐
- Java虚拟机(一)结构原理与运行时数据区域
我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...
- Android--判断是否连接成功了指定wifi
最近在做wifi的相关的东西,打印WifiInfo的时候 无意间发现一个参数,改参数可以查看是否连接成功了指定wifi,但是这是隐藏的,遂将其反射之.代码如下: //通过反射的方式去判断wifi是否已 ...
- python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie)
python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie) 主要包括两部分内容:(1)利用python中的dict实现Trie:(2) ...
- LeetCode题解之Diameter of Binary Tree
1.题目描述 2.分析 深度优先. 3.代码 int ans; int diameterOfBinaryTree(TreeNode* root) { ans = ; depth(root); ; } ...
- C# 异步编程1 APM 异步程序开发
C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...
- 在c/c++中调用Java方法
JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活的使用. 通过使用JNI可 ...
- python第五十二天---第九周作业 类 Fabric 主机管理程序
类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同 ...
- Asp.Net WebApi Get请求整理(一)
Asp.Net WebApi+JQuery Ajax的Get请求整理 一.总结 1.Asp.Net WebApi默认不支持Get请求,需要在Action方法上指定[HttpGet], 除非Action ...
- C#语言————两值交换
//两值交换 public static void Show(ref int num1,ref int num2) { int num=num1; num1=num2; num2=num; } sta ...
- mysql常用赋权命令
GRANT 所需权限 ON 库名.表名 TO '账号'@'允许访问的IP地址'; 把中文按需替换掉 所需权限:select.insert.delete.update按需要来. 上面那个允许访问IP ' ...