05 Scala 数组的基本操作,数组的进阶操作和多维数组

1. 数组的基本操作

1)定长数组

数组的概念和C,JAVA中的数组是一样的, 都是存储同一种类型的元素。定长数组存储一定长度的数组。


   //声明一个数组,类型为Int,元素个数为10.

val nums = new Array[Int](10)

//声明一个数组,类型为String元素个数为10 .

val a = new Array[String](10)

//声明一个数组,初始化第一个元素为‘Hello‘,第二个元素为"World",通过类型推到,判断出//数组的类型为String.

val s =  Array("Hello" , "World")

// 设置数组中存储的第一个元素为"Good"

s(0) = "Good"

for (elem <- s) println(elem)

打印代码,得到如下输出结果:


Good

World

这里使用Scala 强大的工具Scala WorkSheet来验证,打开 ScalaIDE 选择 File -> New -> Scala WorkSheet, 建立一个名字为 ScalainAction 的 Scala WorkSheet。

保存以下代码,就可以看到自动交互的部分。


package com

import scala.collection.mutable.ArrayBuffer

object ScalainAction {

val b = ArrayBuffer[Int]()

}

2)缓存数组

缓存数组存储的元素可以随时改变。

b.insert(2,6) 在缓存数组第2个位置插入一个元素值为6。

b.insert(2,7,8,9) 在缓存数组第2个位置插入多个元素值为7,8,9.。

b.remove(2) 删除缓存数组中第2个元素。

b.remove(2,3) 在缓存数组的第2个位置,连续删除3个元素。

显示结果如下所示:

2. 进阶操作

2.1)yield操作

对数组进行遍历,每个元素乘以2在赋值给新的数组,这里要注意关键字 yield, 必须加上否则 2* elem就是表达式

def main(args: Array[String]): Unit = {

val c = Array(2, 3, 5, 7, 11)

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

for (elem <- result)

println(elem);

}

2.2) Array().sum

还可以直接对数组进行操作,比如汇总sum操作。  比如求数组Array(1,2,3,4)的总和= 1 +2+3+4 = 10

2.3) ArrayBuffer().max

在比如求缓存数组中最长的字符串操作。

2.4)   ArrayBuffer().sorted

对缓存数组进行排序,默认情况下是升序排序。

也可以使用 scala.util.Sorting.quickSort()方法对Array进行快速排序。

2.5)  Array().mkString()

通过Array.mkString()可以很方便的把数组转换为字符串,分隔符可以自定义。

3. 多维数组

先给数组第3行,第2列赋值,在把数组第 [Int][i+1]的值赋值给数组第[i]个


  val matrix = Array.ofDim[Double](3, 4)

matrix(2)(1) = 42

val triangle = new Array[Array[Int]](10)

for (i <- 0 util triangle.length)

triangle(i) = new Array[Int](i + 1)

DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布,请您持续学习。

Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6

腾讯微云:http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy   访问密码 45e2

时间: 2024-12-30 07:28:13

05 Scala 数组的基本操作,数组的进阶操作和多维数组的相关文章

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

1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型.下面是语法声明数组变量: var z:Array[String] = new Array[String](3) or var z = new Array[String](3) or var z = Array("Zara", &

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

int [][] array ={ {1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,19} }; 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public static boolean Find(int target, int [][] array) { int M = array.le

js 取得数组中的最大值和最小值(含多维数组)

转自:http://www.dewen.org/q/433 方法一: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修改: var a=[1,2,3,[5,6],[1,4,8]]; var ta=a.join(",").split(",");//转化为一维数组 alert(Math.max.apply(null,ta

数组(随机生成一维数组),二维数组的概念和题目设计(利用二维数组 :任意给定分数去计算科目和人均平均分)

1 //数组间的关系arr[]中的数字为几,[]内就有几个数 2 //{ }内的数是从0开始,如需要打印应从0开数 3 如{2,6,9,8,7}打印arr[4]就是7 4 #include <stdio.h> 5 #include <stdlib.h> 6 int main() 7 { 8 int arr[] = { 1,2,3,4,8}; 9 10 printf("%d\n", arr[3]); 11 12 system("pause");

C语言数组篇(五)多级指针和二维数组指针的区别

多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[10] --> 10个空间的数组 * p[10] --> 这10个空间的数组里面存放的数据都是 指针型的数据 int *p[10] --> 数组里面每个指针指向的空间存放的是int型的数据 int *p[10] --> int **p; p: 指针数组的数组名,也是数组的首地址. *p 数组里面存放的指针 **p 数组里面存放的指针 指向的空间 的内容 二维数组指针: 二维数

使用POI对excel进行操作生成二维数组

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.poi.hssf.usermodel.HSSF

廖雪峰Java1-4数组操作-3多维数组

二维数组 二维数组就是元素为数组的数组 二维数组每个数组的长度不要求一样.比如 int[][] = { { 1, 2 }, { 3, 4, 5 }, { 6, 7, 8, 9 } } int[][] ns={ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; System.out.println("ns.length: "+ns.length); System.out.println("ns[1][2]: "+ns[1][