scala中的Array

25 阅读2分钟

一.Array的定义

Array 是一种在 Scala 中用于存储固定大小、相同类型元素的数据结构。它在内存中是连续存储的,这使得访问元素的速度非常快。

类型有两种:Array表示长度不可变的数组 和 ArrayBuffer表示长度可变的数组

二.不可变数组

Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。

我们主要学习它的一些常规操作:创建数组,访问元素,填充Array.range

1. 创建不可变数组

2. 访问元素: 注意不要越界。

3. 获取数组的长度:arr.length:获取数组的长度。

// 1. 创建
val arr = Array(1, 2, 3)
// 2. 访问  
println(arr(0)) // 输出1  
println(arr(4)) // 越界错误  
// 3. 长度  
println(s"数组的长度为:${arr.length}")  
// 4. 特殊数组  
val arr1 = Array.range(1,10) // 1-10共10个元素  
val arr2 = Array.range(1,10,2) // 1,3,5,7,9 .1-10,步长为2

三.可变数组

Array表示长度不可变的数组,一旦定义之后,不能再增加,删除元素。

1. 新建。要先导入 ArrayBuffer。 可变的数据结构都需要额外导入

2. 访问修改。数组名(下标)=新值。

3.添加元素

(1) 添加一个元素;+= 元素

(2) 添加多个元素;+=(元素1, 元素2)

4. 删除元素

(1) 删除一个元素: -= 元素

(2) 删除多个元素: -= (元素1, 元素2)

(3) 删除指定位置的元素: remove(下标)

(4) 删除指定位置的多个元素:remove(下标起点,下标终点)

// 创建一个可变数组
val arr= ArrayBuffer(1, 2, 3)
// 添加元素
arr += 4
// 添加多个元素
arr  += (5, 6)
// 删除元素
arr -= 4;
// 删除指定下标  
arr.remove(1)  
// 下标起点,终点  
arr.remove(2, 4)

四.数组常用方法

案例:todos清单。

1. 映射(Map)。arr.map(f):对数组中的每个元素应用函数f,并返回一个新的不可变数组。

2. 过滤(Filter)。任务搜索

3. 搜索和比较

   - arr.indexOf(elem):返回元素elem在数组中的第一个索引。

   - arr.contains(elem):检查数组是否包含元素elem。

4. 切片(Slice)

    arr.slice(from, until):返回数组的一个子数组,从索引from开始直到索引until(不包括until)。

五.多维数组

最典型的多维数组就是二维数组,类似于表格。有两种定义方式:

直接定义: Array.ofDim(x,y)

从一维数组转化得来: 数组. grouped()

var arr2 = arr1.grouped(5)  
var arr3 = arr2.toArray.map(_.toArray)