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. C51系列RAM寄存器表

    特殊功能寄存器地址表 SFR 符号 字节 地址 位地址和位名称 D7 D6 D5 D4 D3 D2 D1 D0 P0口 P0 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0. ...

  2. 删除WIN7系统的共享文件

    运行里面输入fsmgmt.msc命令,点开共享目录,选定要取消共享的文件右键,停止共享.

  3. C++中的基类和派生类

    转载自:http://www.cnblogs.com/sujz/archive/2011/05/12/2044365.html 派生类的继承方式总结: 继承方式 说明 public 基类的public ...

  4. SQL-Duplicate Emails

    思路: 两种思路,可以给当成两个表也可以给当成一张表来做 group by就是按照某个属性给表分个组,然后having语句的含义是“对于每一个group”怎么怎么样 补充知识:count(column ...

  5. 查看MySQL数据库的默认编码

    查看MySQL数据库的默认编码 1.使用status命令能够显示数据库的相关系信息,示例如下: mysql> status;————–mysql Ver 14.12 Distrib 5.0.77 ...

  6. hadoop2.2.0的WordCount程序

    package com.my.hadoop.mapreduce.wordcount; import java.io.IOException; import org.apache.hadoop.conf ...

  7. URAL 1244

    题目大意:给出一个正整数M,给出N个正整数ai,让你在这些数中挑出一些数组成M的一个划分,如果符合条件的划分数超过两个,输出:-1,如果没有输出:0,如果有且仅有一个:则按顺序输出剩下的数的序号. 例 ...

  8. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

  9. h5新特性

    !DOCTYPE html><html> <head> <meta charset="utf-8"> <title></ ...

  10. javascript中的原型理解总结

    经过几天研究查找资料,对原型终于有点理解了,今天就做下总结,不对之处,希望各位能够提出. 1.每一个Javascript对象(null除外)都和另一个对象相关联,“另一个”对象就是我们今天所要总结的原 ...