1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合。数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合

2 声明数组变量:

要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型。下面是语法声明数组变量:

  1. var z:Array[String] = new Array[String](3)     or      var z = new Array[String](3) or var z = Array("Zara", "Nuha", "Ayan")
  1.  

在这里,z被声明为字符串数组,最多可容纳三个元素。可以将值分配给独立的元素或可以访问单个元素,这是可以做到通过使用类似于以下命令:

  1.  
  1. z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"
  1.  
  2. 3.Scala中数组方法:
  1.  

以下是重要的方法,可以同时使用数组。如上所示,则必须使用任何提及的方法之前,要导入Array._包。有关可用方法的完整列表,请Scala中的官方文件。

  1.  
SN 方法及描述
1 def apply( x: T, xs: T* ): Array[T]
创建T对象,其中T可以是Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean数组。
2 def concat[T]( xss: Array[T]* ): Array[T]
连接所有阵列成一个数组。
3 def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit
复制一个数组到另一个。相当于Java的System.arraycopy(src, srcPos, dest, destPos, length).
4 def empty[T]: Array[T]
返回长度为0的数组
5 def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]
返回一个包含一个函数的重复应用到初始值的数组。
6 def fill[T]( n: Int )(elem: => T): Array[T]
返回包含某些元素的计算的结果的次数的数组。
7 def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]
返回一个二维数组,其中包含某些元素的计算的结果的次数。
8 def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T]
返回一个包含一个函数的重复应用到初始值的数组。
9 def ofDim[T]( n1: Int ): Array[T]
创建数组给出的尺寸。
10 def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]
创建了一个2维数组
11 def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]
创建3维数组
12 def range( start: Int, end: Int, step: Int ): Array[Int]
返回包含一些整数间隔等间隔值的数组。
13 def range( start: Int, end: Int ): Array[Int]
返回包含的范围内增加整数序列的数组。
14 def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]
返回包含一个给定的函数的值超过从0开始的范围内的整数值的数组。
15 def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]
返回一个包含给定函数的值超过整数值从0开始范围的二维数组。
  1.  
  1. package first.scala
  2.  
  3. import scala.collection.mutable.ArrayBuffer
  4. import sun.org.mozilla.javascript.internal.ast.Yield
  5.  
  6. object ScalaInAction {
  7. //scala.Array
  8.  
  9. /******************************************************************************************************************************/
  10. //定长数组
  11. //声明数组方式一:类型,大小
  12. val nums = new Array[Int](10) //> nums : Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  13. val a = new Array[String](10) //> a : Array[String] = Array(null, null, null, null, null, null, null, null, n
  14. //| ull, null)
  15. //声明方式二:可以通过类型推断,推断出数组的类型
  16. val s = Array("hello" , "world") //> s : Array[String] = Array(hello, world)
  17.  
  18. s(0) = "goodbye"
  19.  
  20. //可变数组
  21. val b = ArrayBuffer[Int]() //> b : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
  22.  
  23. b += 1 //> res0: first.scala.ScalaInAction.b.type = ArrayBuffer(1)
  24. b += (1,2,3,4) //> res1: first.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 4)
  25. b ++= Array(12,15,63) //> res2: first.scala.ScalaInAction.b.type = ArrayBuffer(1, 1, 2, 3, 4, 12, 15,
  26. //| 63)
  27. //删除最后的2个元素
  28. b.trimEnd(2)
  29. b //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 4,
  30. //| 12)
  31. //给定索引处插入 数据
  32. b.insert(2, 15)
  33. b //> res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 15, 2, 3
  34. //| , 4, 12)
  35.  
  36. //删除索引为2的元素
  37. b.remove(2) //> res5: Int = 15
  38.  
  39. //转换为数组,类型的变换
  40. b.toArray //> res6: Array[Int] = Array(1, 1, 2, 3, 4, 12)
  41. b //> res7: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 4,
  42. //| 12)
  43.  
  44. /*******************************************************************************************************/
  45. //数组的进阶操作
  46.  
  47. for(i <- 0 until a.length)
  48. println(i + " : " + a(i)) //> 0 : null
  49. //| 1 : null
  50. //| 2 : null
  51. //| 3 : null
  52. //| 4 : null
  53. //| 5 : null
  54. //| 6 : null
  55. //| 7 : null
  56. //| 8 : null
  57. //| 9 : null
  58.  
  59. val c = Array(2,5,8,9,18) //> c : Array[Int] = Array(2, 5, 8, 9, 18)
  60. val result = for(elem <- c) yield 2 * elem
  61. //> result : Array[Int] = Array(4, 10, 16, 18, 36)
  62.  
  63. //将c中的偶数乘2
  64. for(elem <- c if elem % 2 == 0 ) yield 2 * elem
  65. //> res8: Array[Int] = Array(4, 16, 36)
  66.  
  67. //spark中方式,和上面的效果一样。先过滤后map
  68. c.filter( _ % 2 == 0).map(2 * _) //> res9: Array[Int] = Array(4, 16, 36)
  69.  
  70. //求和
  71. Array(1,2,3).sum //> res10: Int = 6
  72.  
  73. //获取最长的字符串
  74. ArrayBuffer("Mary", "had", "a", "little", "lamb").max
  75. //> res11: String = little
  76.  
  77. //排序,默认升序排序
  78. val d = ArrayBuffer(1,7,2,9) //> d : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 7, 2, 9)
  79. val bSorted = d.sorted //> bSorted : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 7,
  80. //| 9)
  81.  
  82. //快速排序
  83. val e = Array(1,7,2,9) //> e : Array[Int] = Array(1, 7, 2, 9)
  84. scala.util.Sorting.quickSort(e)
  85.  
  86. //定义元素连接方式
  87. e.mkString(" and ") //> res12: String = 1 and 2 and 7 and 9
  88. //定义元素连接方式
  89. a.mkString("<", "," , ">") //> res13: String = <null,null,null,null,null,null,null,null,null,null>
  90.  
  91. /**************************************************************************************************************************/
  92.  
  93. //定义多维数组方法: Array.ofDim[Double](3,4)
  94. val matrix = Array.ofDim[Double](3,4) //> matrix : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0
  95. //| , 0.0, 0.0, 0.0), Array(0.0, 0.0, 0.0, 0.0))
  96. matrix(2)(1) = 42
  97.  
  98. matrix //> res14: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0, 0.0), Array(0.0, 0
  99. //| .0, 0.0, 0.0), Array(0.0, 42.0, 0.0, 0.0))
  100. val triangle = new Array[Array[Int]](10)
  101. //> triangle : Array[Array[Int]] = Array(null, null, null, null, null, null, n
  102. //| ull, null, null, null)
  103.  
  104. for(i <- 0 until triangle.length)
  105. triangle(i) = new Array[Int](i + 1)
  106. triangle //> res15: Array[Array[Int]] = Array(Array(0), Array(0, 0), Array(0, 0, 0), Arr
  107. //| ay(0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0), Array(0, 0,
  108. //| 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0
  109. //| , 0), Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
  110.  
  111. }
  1.  
  1.  
  1.  
  1.  

[原创]Scala学习:数组的基本操作,数组进阶操作,多维数组的更多相关文章

  1. [原创]Scala学习:Tuple,Array,Map ,文件操作

    1.Tuple:元祖.是一个有用的容器对象. 1)特点:  ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变:  ② 元祖可以包含不同类型的数据,对象:   ③ 索引是从 '_1 ...

  2. 【剑指Offer学习】【面试题3 :二维数组中的查找】

    package 二维数组查找; public class Test03 { /** * 在一个二维数组中,每一行都按 package 二维数组查找; public class Test03 { /** ...

  3. [Swift]多维数组的表示和存储:N维数组映射到一维数组(一一对应)!

    数组:有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标.数组 ...

  4. JNI操作二维数组

    之前的文章讲解了有关JNI使用方法,这篇文章进阶一点,介绍下JNI操作二维数组的方法.有了之前文章的操作JNI的方法,这里直接上代码了. Java代码部分 package com.testjni; p ...

  5. PHP操作 二维数组模拟mysql函数

    PHP操作 二维数组模拟mysql函数<pre>public function monimysqltest(){ $testarray=array( array('ss'=>'1', ...

  6. python学习9—文件基本操作与高级操作

    python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...

  7. 数组的三种方式总结 多维数组的遍历 Arrays类的常用方法总结

    一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...

  8. 【学习笔记】【C语言】二维数组

    1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...

  9. Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组

    目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...

随机推荐

  1. ②springMVC入门

    1 1.1      需求 以案例作为驱动. springmvc和mybaits使用一个案例(商品订单管理). 功能需求:商品列表查询 1.2      环境准备 数据库环境:mysql5.1

  2. (转)js的call和apply

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  3. NRF51822之发射功率

    设置蓝牙的TX Power 使用的函数sd_ble_gap_tx_power_set(int8_t tx_power);   参看例子为 S110/ble_app_proximity #define ...

  4. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  5. Qt from Linux to Windows target

    45down voteaccepted Just use M cross environment (MXE). It takes the pain out of the whole process: ...

  6. Cocos2d-JS工程中的文件结构

    res文件夹存放资源文件 src文件夹是主要的程序代码 app.js是实现游戏场景的JavaScript文件 resource.js在src文件夹中,定义资源对应的变量 config.json保存模拟 ...

  7. Magento多语言功能

    Magento多语言功能是建立在视图(view)基础之上的,可以通过后台创建店铺视图来创建基于Magento的多语言店铺.本文为大家讲解如何创建多语言的功能.首先,进入“管理店铺”节点,如下所示. S ...

  8. 在css中定义滚动条样式

    1,Overflow内容溢出时的设置 overflow 水平及垂直方向内容溢出时的设置 overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向内容溢出时的设置 以上三个属性设置 ...

  9. UIPickerView 循环滚动(一种假象)

    因为网上没有查到相关方法,故而采用一种假象的方法来实现,选项循环滚动 - (void)viewDidLoad { [super viewDidLoad]; /** UIPickerView 选择器 * ...

  10. JS事件分析

    1.注册事件 1.1 使用HTML元素的事件属性 <div id='myDiv' style="width:100px;height:100px;background-color:re ...