Scala—数组(不可变数组Array、可变数组ArrayBuffer)用法详解

Scala集合概述-链接

大家可以点击上方链接,先对Scala的集合有一个整体的概念🤣🤣🤣

在这里插入图片描述

在 Scala 中,数组是一种特殊的集合类型,可以是可变的也可以是不可变的。

在这里插入图片描述

1. 不可变数组

在 Scala 中,不可变数组通常指的是 Array 类型。Array 类型在 JVM 上直接映射为 Java 数组,因此的性能非常高。

不可变数组支持索引访问和修改,但修改操作不会创建新的数组。

  • 创建不可变数组

在这里插入图片描述

  • 访问和修改数组元素

在这里插入图片描述

常用方法可以看我这篇文章哈,总结的有三十个方法(包括多维数组用法),够用啦🤣

数组常用方法—链接

在这里插入图片描述


2. 可变数组

在 Scala 中,可变数组通常指的是 ArrayBuffer 类型,位于 scala.collection.mutable 包中。
在这里插入图片描述

ArrayBuffer 是一个动态数组,支持高效的添加和删除操作。

在这里插入图片描述

看看下面总结的方法,会用就行🤣🤣🤣:

  1. 创建 ArrayBuffer

import scala.collection.mutable.ArrayBuffer// 创建一个空的 ArrayBuffer
val buffer = ArrayBuffer[Int]()// 创建一个包含初始元素的 ArrayBuffer
val buffer2 = ArrayBuffer(1, 2, 3, 4, 5)

在这里插入图片描述

  1. 添加元素

    • +=:添加一个元素
    • ++=:添加多个元素(可以是另一个集合)
    • append:添加一个或多个元素
    • prepend:在开头添加一个或多个元素
    • insert: 在指定位置插入元素

buffer += 1 // 添加一个元素
buffer ++= Array(2, 3, 4) // 添加多个元素
buffer.append(5, 6) // 添加多个元素
buffer.prepend(0) // 在开头添加一个元素
buffer.insert(0,-1) // 在在指定位置插入数据
buffer.insert(0,-3,-2)

在这里插入图片描述

  1. 删除元素

    • -=:删除一个元素
    • --=:删除多个元素
    • remove:删除指定位置的元素
    • trimStart:删除开头的若干个元素
    • trimEnd:删除末尾的若干个元素

buffer -= 1 // 删除一个元素
buffer --= Array(2, 3) // 删除多个元素
buffer.remove(0) // 删除第一个元素
buffer.trimStart(2) // 删除开头的两个元素
buffer.trimEnd(2) // 删除末尾的两个元素

在这里插入图片描述

  1. 访问和修改元素

    • 索引访问:使用索引访问和修改元素
    • update:修改指定位置的元素

val firstElement = buffer(0) // 访问第一个元素
buffer(0) = 10 // 修改第一个元素

在这里插入图片描述

  1. 遍历元素

    • foreach:遍历所有元素
    • map:映射所有元素
    • filter:过滤元素

buffer.foreach(println) // 遍历并打印所有元素val squared = buffer.map(x => x * x) // 映射所有元素
println(squared.mkString(", ")) // 输出: 100, 36, 16val evenNumbers = buffer.filter(_ % 2 == 0) // 过滤偶数
println(evenNumbers.mkString(", ")) // 输出: 36

在这里插入图片描述

  1. 查找元素

    • contains:检查是否包含某个元素
    • indexOf:查找元素的索引
    • lastIndexOf:查找元素的最后一个索引

val contains10 = buffer.contains(10) // 检查是否包含 10
val index = buffer.indexOf(10) // 查找 10 的索引
val lastIndex = buffer.lastIndexOf(10) // 查找 10 的最后一个索引

在这里插入图片描述

  1. 排序和反转

    • sortWith:根据自定义比较器排序
    • sortBy:根据某个属性排序
    • reverse:反转数组

buffer.sortWith(_ < _) // 升序排序
buffer.sortBy(_.toString) // 根据字符串表示排序
buffer.reverse // 反转数组

在这里插入图片描述

  1. 转换为其他集合类型

    • toArray:转换为数组
    • toList:转换为列表
    • toSeq:转换为序列

val array = buffer.toArray // 转换为数组
val list = buffer.toList // 转换为列表
val seq = buffer.toSeq // 转换为序列

在这里插入图片描述


整理不易 一键三连呀列位😂😂😂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kylin Server V10 下 Nacos 集群部署

集群部署架构图 端口 与主端口的偏移量 描述 8848 0 主端口,客户端、控制台及

摄像头原始数据读取——V4L2(userptr模式,V4L2_MEMORY_USERPTR)

摄像头原始数据读取——V4L2(userptr模式,V4L2_MEMORY_USERPTR) 用户指针方式允许用户空间的应用程序分配内存&#xff0c;并将内存地址传递给内核中的驱动程序。驱动程序直接将数据填充到用户空间的内存中&#xff0c;从而避免了数据的拷贝过程。 流程&#xff1a; 通过VIDI…

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道&#xff0c;电子商务巨头亚马逊&#xff08;AMZN&#xff09;已开发出一种新的生成式人工智能&#xff08;AI&#xff09;&#xff0c;不仅能处理文本&#xff0c;还能处理图片和视频&#xff0c;从而减少对人工智能初创公司Anthropic的依赖…

一次完整的CNAS软件测试实验室内部审核流程

内部审核是软件测试实验室管理体系重的重要部分&#xff0c;通过内部审核可以为有效的管理评审和纠正、预防措施提供信息&#xff0c;以验证组织的管理体系是否持续的满足规定的要求并且正在运行。 内部审核需要依据文件化的程序&#xff0c;每年至少实施一次&#xff0c;软件…

Matlab数字信号处理——音频信号处理与分析GUI

1.实现内容 实现功能有回响、变声、倒放、变速、音量调整、加噪、设计 FIR和 IR 滤波器实现去噪功能(高通低通带通带阻)&#xff0c;并且在时域波形图和频域波形展示变化。滤波器包括各种参数的选择、滤波器结构和类型的选择等。同时GUI上还包含打开、播放、保存、退出功能。 …

pcb线宽与电流

三十年一路高歌猛进的中国经济&#xff0c; 中国经历了几个三十年&#xff1f; 第一个三十年&#xff1a;以计划为导向。 第二个三十年&#xff1a;以经济为导向。 现在&#xff0c;第三个三十年呢&#xff1f; 应该是以可持续发展为导向。 传统企业摇摇欲坠&#xff0c; 新兴企…

redis命令 及 redis 常见的数据结构

文章目录 一. 核心命令1. set2. get 二. 全局命令1. keys2. exists3. del4. expire5. ttl6. type 三. redis 常见的数据结构 一. 核心命令 1. set set key value key 和 value 都是string类型的 对于key value, 不需要加上引号, 就是表示字符串类型, 加上也可以 redis中, 不…

跨平台应用开发框架(4)----Qt(系统篇)

目录 1.Qt事件 1.事件来源 2.事件处理 3.按键事件 1.组合按键 4.鼠标事件 1.鼠标单击事件 2.鼠标释放事件 3.鼠标双击事件 4.鼠标移动事件 5.滚轮事件 5.定时器 1.QTimerEvent类 2.QTimer 类 3.获取系统日期及时间 6.事件分发器 7.事件过滤器 2.Qt文件 1.输入…

uniapp在App端定义全局弹窗,当打开关闭弹窗会触发onShow、onHide生命周期怎么解决?

在uniapp(App端)中实现自定义弹框&#xff0c;可以通过创建一个透明页面来实现。点击进入当前页面时&#xff0c;页面背景会变透明&#xff0c;用户可以根据自己的需求进行自定义&#xff0c;最终效果类似于弹框。 遇到问题&#xff1a;当打开弹窗(进入弹窗页面)就会触发当前页…

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题&#xff1a;DM达梦管理工具拖出空白区块&#xff0c;无法关闭。 2. 解决方法 新建查询页&#xff0c;把查询页拖到空白区块里&#xff0c;完全覆盖空白区块。之后空白区块会变成查询页&#xff0c;右上角会出现叉号&#xff0c;点击叉号关闭就行。 3. 后记 达梦…

DevExpress的web Dashboard应用

本文旨在从零开始创建一个包含dashboard的应用 一、前期准备 1、语言&#xff1a;C# 2、软件&#xff1a;Visual Studio 2019 3、框架&#xff1a;DevExpress19.2(付费)、ASP.NET(Web) 4、组件&#xff1a;dashboard 二、创建ASP.NET Web窗体仪表板应用程序 1、创建一个空的w…

【vue-router】Vue-router如何实现路由懒加载

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

go语言切片

切片 切片是一种数据结构&#xff0c;这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的&#xff0c;可以按需自动增长和缩小。切片的动态增长是通过内置函数 append 来实现的。这个函数可以快速且高效地增长切片。还可以通过对切片再次切片来缩小一个切片的…

2024年一级建造师考试成绩,即将公布!

一级建造师考试成绩一般在考试结束后3个月左右的时间公布&#xff01; 根据官方通知&#xff0c;重庆、江苏、青海、江西、云南、湖南、福建、北京、山西、黑龙江等地在今年一建报名通知里提到&#xff1a;2024年一级建造师考试成绩预计于2024年12月上旬公布。考生可在这个时间…

基于Matlab的图像去噪算法仿真

中值滤波的仿真 本节选用中值滤波法对含有高斯噪声和椒盐噪声的图像进行去噪&#xff0c;并用Matlab软件仿真。 &#xff08;1&#xff09;给图像加入均值为0&#xff0c;方差为0.02的高斯噪声&#xff0c;分别选择33模板、55模板和77模板进行去噪 Matlab部分代码&#xff1…

交通流量预测:基于交通流量数据建立模型

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

嵌入式QT学习第4天:Qt 信号与槽

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本章思维导图如下&#xff1a; 不使用 Qt Designer 的方式进行开发&#xff0c;用代码绘界面&#xff0c;可以锻炼我们的布局能力&#xff0c;和代码逻辑能力&#x…

多线程+线程池

普通线程的创建 三种创建方式实例&#xff1a; 多线程本质上是毫无关系的&#xff0c;执行顺序是不可预知的&#xff0c;但是由于callable方式创建的对象有返回值所以主函数在执行的时候&#xff0c;需要等待返回值回来才能继续执行其他线程&#xff0c;所以在这种状态下是…

mac访达打开终端

选择文件夹打开 选中文件夹&#xff0c;然后右键即可&#xff1a; 在当前文件夹打开 在访达的当前文件夹长按option键 左下角出现当前文件夹路径 右键即可打开终端

【模型剪枝】YOLOv8 模型剪枝实战 | 稀疏化-剪枝-微调

文章目录 0. 前言1. 模型剪枝概念2. 模型剪枝实操2.1 稀疏化训练2.2 模型剪枝2.3 模型微调总结0. 前言 无奈之下,我还是写了【模型剪枝】教程🤦‍♂️。回想当年,在写《YOLOv5/v7进阶实战专栏》 时,我经历了许多挫折,才最终完成了【模型剪枝】和【模型蒸馏】的内容。当时…