Scala学习笔记 --- 数组操作Array、ArrayBuffer以及遍历数组

2024-08-23 05:32

本文主要是介绍Scala学习笔记 --- 数组操作Array、ArrayBuffer以及遍历数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Array

在Scala中,Array代表的含义与Java中类似,也是长度不可改变的数组。

此外,由于Scala与Java都是运行在JVM中,双方可以互相调用,因此Scala数组的底层实际上是Java的数组。

例如字符串数组在底层就是Java的String[],整个数组在底层就是Java的Int[];

 

数组初始化后,长度就固定下来了,而且元素的全部根据其类型初始化;

也可以直接使用Array()创建数组,元素类型自动推断;

val a = new Array[Int](10)
val b = new Array[String](10)
a(0) = 1
println(a(0))
b(0) = "22"
println(b(0))
val c = Array("Hello", "World")
println(c(0))
println(c(1))
val d = Array("leo", 30)
println(d(0))
println(d(1))
println(d(2))

 

二、ArrayBuffer

在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合头,则可以使用ArrayBuffer;

使用ArrayBuffer需要引入对应的包:

import scala.collection.mutable.ArrayBuffer
  • ArrayBuffer添加元素需要使用 += 的方式添加,例如:

val e = ArrayBuffer[Int]()
e += 1
println(e(0))
  • 以及添加多个元素如下:

e += (2, 3, 4, 5 ,6)
println(e(1))
println(e(2))
println(e(3))
println(e(4))
println(e(5))
  • ArrayBuffer添加数组Array

e ++= Array(7, 8, 9, 10)
println(e(6))
println(e(7))
println(e(8))
println(e(9))

 

  • ArrayBuffer截断后五个元素的操作是 

e.trimEnd(5)
println(e(0))
println(e(1))
println(e(2))
println(e(3))
println(e(4))

 

  • ArrayBuffer插入单个数据元素是,在下标为5的地方插入6

e.insert(5, 6)
println(e(5))

 

  • 插入多个数据元素,在下标为6的地方插入 7,8,9, 10

e.insert(6, 7, 8, 9, 10)
println(e(6))
println(e(7))
println(e(8))
println(e(9))

 

  • 清除元素使用remove函数,清除下标是1的元素

e.remove(1)
println(e(1))
  • 清除元素使用remove函数,我们从下标是1的地方开始清除3个元素

e.remove(1, 3)
println(e(1))
println(e(2))
println(e(3))
  • ArrayBuffer转换为Array

val eArray = e.toArray
  • Array转换为ArrayBuffer

val aArrayBuffer = a.toBuffer

 

三、遍历Array 和 ArrayBuffer (共四种方式)

我们使用for循环和until遍历Array/ArrayBuffer

  • 使用until是RichInt提供的函数, 从0开始,但是不包含b.length

for (i <- 0 until b.length) {println(b(i))
}
  • 可以每次间隔2的情况下遍历

for (i <- 0 until (b.length, 2)) {println(b(i))
}
  • 如果想从尾部遍历的话

for (i <- (0 until b.length).reverse) {println(b(i))
}
  • 使用增强for循环的方式来遍历

for (i <- b) {println(i)
}

 

这篇关于Scala学习笔记 --- 数组操作Array、ArrayBuffer以及遍历数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098482

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时