scala 无论从数组的定义还是操作方面来说都跟java非常相似,但又有其独特的强大之处…

1、 定长数组

对于长度不变的数组,可以用scala中的Array。

//scala 里使用new实例化对象。 实例化过程中,可以用值和类型使对象参数化(创建对象的同时完成对它的设置)

val nums = new Array[Int](5);  //含5个整数的数组,元素默认初始化为0;

val arr = new Array[String](10);  //含10个字符串的数组,元素默认初始化为null;

arr(0) = “hello”; //数据赋值

val s = Array("hello", "world"); //长度为2的String数组。类型:自动推断。

注: jvm 中 scala的Array 是以 java数组的方式实现。 示例中的s 在jvm中的类型为 java.lang.String[];

2、变长数组

对于长度可变的数组,可以用scala中的ArrayBuffer。相应java中有ArrayList。

val nums = ArrayBuffer[Int]();

val nums = new ArrayBuffer[Int]           //一个空数组,准备存放整数。

nums += 1; //ArrayBuffer(1); 用+=在尾端添加元素。

nums +=(2,3,4,5) // ArrayBuffer(1,2,3,4,5); 在尾端添加多个元素。

nums ++=Array(6,7,8) //ArrayBuffer(1,2,3,4,5,6,7,8)  ++= 可以用来追加任何集合

nums.trimEnd(5) //ArrayBuffer(1,2,3)  移除最后五个元素。

nums.insert(2, 4)  //ArrayBuffer(1,2,4,3)  在下标2 前加一个元素 4;

nums.insert(2, 5, 6) //ArrayBuffer(1,2,5,6,4,3) 在下标2前插入多个元素

nums.remove(3) //ArrayBuffer(1,2,5,4,3) 移除第三个元素 (下标从0 始)

nums remove(2, 2)//ArrayBuffer(1,2, 3) 移除从第二个元素始的2个元素;

可变长数组转换为定长数据只用掉用其toArray方法。如 nums.toArray;

反过来,调用 a.toBuffer;  

3、遍历数组和数组缓冲

scala数组(数组缓冲)的遍历,可以用for循环进行。如:

for(i <- 0 until a.length)

println(a(i));

//变量i 取 0 到 a.length;  until 是 RichInt类的方法, 返回小于上限的方法。

4、数组转换

前边讲述了如何像Java那样操作数组。不过在scala中,数组还有更强大的功能。如过滤,转换等。例:

val a = Array(1,2,3,5,7);

val result = for(elem <- a) yield 2 * elem;

//result = Array(2,4,6,10,14); 此处转变并不会改变原数组的值,而是产生一个全新的数组。即for() yield 创建一个类型与原始集合相同的新集合。 数集合中的元素包含yield 之后的表达式的值,每个循环对应一个。

另外对集合处理时,你若只想处理满足条件的特定元素,这个需求可以通过守卫:for中的if 来实现。 若对a中奇数翻倍,则

for(elem <- a if elem % 2 == 1) yield 2 * elem;

5、常用算法

Array(1,2,4,6).sum  //计算数组的值

Array(1,4,2,6).sorted(_ < _); //排序 不改变原数组的值。

另外还有 append ,  appendAll, count, copyToArray, max等方法

scala 入门(2)--数组相关操作的更多相关文章

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

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

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

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

  3. 快学Scala习题解答—第三章 数组相关操作

    3 数组相关操作  3.1 编写一段代码.将a设置为一个n个随机整数的数组,要求随机数介于0(包括)和n(不包括)之间  random和yield的使用 import scala.math.rando ...

  4. scala 对一个数组分组操作

    通常我们有一些需求,对一个数组两两进行翻转,通常就涉及到奇数偶数,否则就会出现数组index异常了,所以我们该怎么办呢? 虽然是一个入门级问题,但是我还是觉得这是一个很有意思的题目,因此写了一个对于通 ...

  5. 《快学Scala》第三章 数组相关操作

  6. 快学Scala-第三章 数组相关操作

    知识点: 1.定长数组 Array val nums = new Array[Int](10) //10个整数的数组,所有元素初始化为0 val a = new Array[String](10) / ...

  7. 【php】php数组相关操作函数片段

    下面这些都是我在工作中用到的函数,现在整理下. 判断是否是一个数组 function _is_array($value){ if (is_array($value)) { return true; } ...

  8. Ch03 数组相关操作 - 练习

    1. 编写一段代码,将a设置为一个n个随机数的数组,要求随机数介于0(包含)和n(不包含)之间. //import java.lang.Math def getArray(n:Int)={   val ...

  9. linux awk数组相关操作介绍

    用awk进行文本处理,少不了就是它的数组处理.那么awk数组有那些特点,一般常见运算又会怎么样呢.我们先看下以下的一些介绍,结合样例我们会解说下它的不同之处.在 awk 中数组叫做关联数组(assoc ...

随机推荐

  1. 我想要个pc和手机共有的客户端,就像百度云(iBarn网盘好用)

    https://github.com/zhimengzhe/iBarn iBarn网盘是一个基于PHP开发的先进的云存储系统,提供文件的网络备份,同步和分享服务:支持断点续传,秒传等功能:可选择文件下 ...

  2. Jetty监控线程使用情况的配置

    Jetty监控线程使用情况配置 第一步,配置xml文件 jetty-monitor.xml 参数说明: threads: 线程池中的线程 busyThreads: 使用中的线程 idleThreads ...

  3. jquery中的属性和css

    jQuery中的属性用于获取或设置元素的属性 1.attr(),获取或设置所有相匹配的元素的属性值:removeAttr("attr"),移除所有相匹配的元素的属性 //html ...

  4. 企业版IDP的申请及“In House”发布

    企业版IDP,即iOS Development Enterprise Program.注意是$299/Year那种,并不是$99/Year的那种. 这种方式的IDP其最大的好处在于:可以发布“In H ...

  5. Linux 与 BSD 有什么不同?

    Linux 与 BSD 有什么不同? 这篇文章是别人写的,并做了一点修改. 汉澳sinox就是基于bsd开发的,因此能够理解为一个bsd分支,可是由于sinox不开源,被排除在外.bsd不是商业软件, ...

  6. android音乐播放器开发 SweetMusicPlayer 实现思路

    一,实现效果 眼下还不是特别完好,主要有下面几个功能, 1,载入歌曲列表(实现a-z字母检索) 2,播放本地音乐 3.智能匹配本地歌词 4.智能载入在线歌词(事实上不算智能.发现歌词迷api提供的歌词 ...

  7. Android Studio 初体验

    Google在I/O */

  8. ContextLoaderListener初始化的前后文和DispatcherServlet初始化的上下文关系

    ContextLoaderListener初始化的上下文加载的Bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层.Service层Bean: DispatcherServlet ...

  9. 大数据笔记10:大数据之Hadoop的MapReduce的原理

    1. MapReduce(并行处理的框架) 思想:分而治之,一个大任务分解成多个小的子任务(map),并行执行后,合并结果(Reduce) (1)大任务分解成多个小任务,这个过程就是map: (2)多 ...

  10. 【转】NSHashtable and NSMaptable

    本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合 ...