scala中的Array

一.Array的定义

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

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

二.不可变数组

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

常规操作:创建数组,访问元素,填充Array.range

  1. 创建不可变数组
  2. 访问元素: 注意不要越界(越界会)
  3. 获取数组的长度:arr.length:获取数组的长度。
复制代码

scala

体验AI代码助手

代码解读

复制代码

package array /** * Array 和 List 的区别 * * array:有序,数组:元素在空间上连续,通过下标去访问元素会特别快! * List:有序,链表:元素在空间上不连续 * * 两种类型 * 1.可变 * 2.不可变:一个数组创建之后,不能添加,不能删除! * * 常用方法:添加,删除,查找,循环,排序,..... */ object array01 { def main(args: Array[String]): Unit = { // 可变数组 val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3) // 向数组最后添加元素 arr1 += 4 println(arr1) // 不可变数组 val arr2 = Array(1,2,3) // 不可变数组不能直接修改,拼接生成新数组 // val arr2 = arr2 :+ 4 println(arr2) } }

三.可变数组

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

  1. 新建。要先导入 ArrayBuffer。 可变的数据结构都需要额外导入
  2. 访问修改。数组名(下标)=新值。
  3. 添加元素
  • 添加一个元素;+= 元素
  • 添加多个元素;+=(元素1, 元素2)
  1. 删除元素
  • (1) 删除一个元素: -= 元素
  • (2) 删除多个元素: -= (元素1, 元素2)
  • (3) 删除指定位置的元素: remove(下标)
  • (4) 删除指定位置的多个元素:remove(下标起点,下标终点)
复制代码

scala

体验AI代码助手

代码解读

复制代码

package array /** * Array 和 List 的区别 * * array:有序,数组:元素在空间上连续,通过下标去访问元素会特别快! * List:有序,链表:元素在空间上不连续 * * 两种类型 * 1.可变 * 2.不可变:一个数组创建之后,不能添加,不能删除! * * 常用方法:添加,删除,查找,循环,排序,..... */ object array03 { def main(args: Array[String]): Unit = { // 创建1到99的数组(左闭右开) val arr = Array.range(1, 100) arr.foreach(println) // 打印1-99 // 创建1到99、步长为3的数组 val arr1 = Array.range(1, 100, 3) arr1.foreach(println) // 打印1、4、7...97 // 定义数组 val arr2 = Array(1,2,3) // 访问数组元素 println(arr2(0)) // 输出第一个元素:1 println(arr2(2)) // 输出第三个元素:3 // println(arr2(20)) // 注释:会触发数组越界异常 } }

复制代码

scala

体验AI代码助手

代码解读

复制代码

package array /** * Array 和 List 的区别 * * array:有序,数组:元素在空间上连续,通过下标去访问元素会特别快! * List:有序,链表:元素在空间上不连续 * * 两种类型 * 1.可变 * 2.不可变:一个数组创建之后,不能添加,不能删除! * * 常用方法:添加,删除,查找,循环,排序,..... */ object array03 { def main(args: Array[String]): Unit = { // 定义可变数组 val arr1 = scala.collection.mutable.ArrayBuffer(1,2,3) // 追加元素(单个) arr1 += 4 // 追加元素(多个) arr1 ++= Array(5,6,7) // 删除元素:删除下标为1的元素 // arr1.remove(0) // 删除元素:从下标0开始,删除3个元素 arr1.remove(0, 3) // 修改元素:将下标为0的元素改为700 arr1(2) = 700 // 查找元素:判断是否包含指定值 println(arr1.contains(6)) // 输出false(原元素已被删除) println(arr1.contains(8))// 输出true println(arr1.sum)//求和 // 遍历数组 arr1.foreach(ele => println(ele)) } }

四.数组常用方法

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

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

  3. 搜索和比较

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

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

  1. 切片(Slice)

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

复制代码

scala

体验AI代码助手

代码解读

复制代码

package array object array04 { def main(args: Array[String]): Unit = { // 定义可变数组 val arr1 = scala.collection.mutable.ArrayBuffer(1,2,0,-1,20,3) // 排序:降序排序(a > b) val arr2 = arr1.sortWith((a, b) => a > b) // 切片:获取下标0(包含)到3(不包含)的元素 val arr3 = arr1.slice(0, 3) // 过滤:保留大于0的元素 val arr4 = arr1.filter(x => x > 0) // 搜索元素下标:查找-2的位置(不存在则返回-1) val target = -2 val result = arr1.indexOf(target) println(s"${target}的下标是 ${result}") // 遍历过滤后的数组 arr4.foreach(ele => println(ele)) } }

五.多维数组

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

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

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

相关推荐
傻乐u兔1 小时前
C语言进阶————指针4
c语言·开发语言
大模型玩家七七1 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
历程里程碑1 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
牛奔2 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
想用offer打牌7 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
lly2024068 小时前
Bootstrap 警告框
开发语言
2601_949146538 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧8 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX8 小时前
服务异步通信
开发语言·后端·微服务·ruby