Scala学习笔记4: 数组

目录

    • 第四章
      • 1- 定长数组
      • 2- 变长数组
      • 3- 遍历数组和数组缓存
      • 4- 数组转换
      • 5- 常用算法
      • 6- 多维数组
      • end

第四章

1- 定长数组

在Scala中, 定长数组可以使用 Array 类来创建;

定长数组在创建时需要指定数组的长度, 并且长度在整个数组生命周期中保持不变;

示例:

    // 定义一个定长数组val fixeArray = new Array[Int](5)// 给定长数组赋值fixeArray(0) = 1fixeArray(1) = 2fixeArray(2) = 3fixeArray(3) = 4fixeArray(4) = 5// 遍历数组 并打印for (i <- 0 until fixeArray.length) {println(fixeArray(i)) // 输出: 1 2 3 4 5}

在上面示例中, 我们首先创建了一个长度为5的定长整型数组 fixedArray , 然后分别给数组的每个位置赋值, 并最后通过循环访问并打印数组中的元素;

定长数组在Scala中是一种常见的数据结构, 使用于需要固定长度的情况 .

2- 变长数组

在Scala中, 变长数组通常使用 ArrayBuffer 来实现;

ArrayBuffer 是可变长度的数组, 可以动态添加或删除元素, 是一种常用的数据结构;

示例:

    import scala.collection.mutable.ArrayBuffer// 创建一个空的变长数组 ArrayBufferval dynamicArray = new ArrayBuffer[Int]()// 向 ArrayBuffer 中添加元素dynamicArray += 10dynamicArray += 20dynamicArray += 30// 打印 ArrayBuffer 中的元素println(dynamicArray) // 输出: ArrayBuffer(10, 20, 30)// 通过循环访问 ArrayBuffer 中的元素for (elem <- dynamicArray) {println(elem) // 输出: 10 20 30}// 从ArrayBuffer 中删除元素dynamicArray -= 20// 打印移除元素后的 ArrayBufferprintln(dynamicArray) // 输出: ArrayBuffer(10, 30)

通过使用 ArrayBuffer , 可以方便地操作变长数组, 动态添加或删除元素以满足不同需求 .

3- 遍历数组和数组缓存

在Scala中, 遍历数组可以使用循环结构或者高阶函数来实现;

对应数据缓存, 可以使用 ArrayBuffer 来动态管理数据组大小;

示例:

    // 遍历数组, 数组缓存import scala.collection.mutable.ArrayBuffer// 创建一个普通数组val arr = Array(1, 2, 3, 4, 5)// 遍历数组并打印每个元素for (elem <- arr) {println(elem) // 输出: 1, 2, 3, 4, 5}for (i <- 0 until arr.length) {println(arr(i)) // 输出: 1, 2, 3, 4, 5}// 使用高阶函数遍历数组arr.foreach(elem => println(elem)) // 输出: 1, 2, 3, 4, 5// 创建一个数组缓存val buffer = ArrayBuffer[Int]()// 向数组缓存中添加元素buffer += 10buffer += 20buffer += 30// 遍历并打印数组缓存中的元素for (elem <- buffer) {println(elem) // 输出: 10, 20, 30}// 使用高阶函数遍历数组缓存buffer.foreach(elem => println(elem)) // 输出: 10, 20, 30

上面示例, 可以了解如何在Scala中遍历数组以及使用数组缓存;

遍历数组可以通过循环或高阶函数实现, 而数组缓存则可以使用 ArrayBuffer 来动态管理数组大小 .

4- 数组转换

在Scala中, 可以使用 map 函数对数组进行转换;

map 函数可以将数组中的每个元素应用于指定的函数, 并返回一个新的数组, 其中包含应用函数后的结果;

示例:

    val arr = Array(1, 2, 3, 4, 5)// 使用 map 函数对数组进行转换, 将每个元素乘2val transformedArr = arr.map(x => x * 2)// 打印转换后的数组println(transformedArr.mkString(", ")) // 输出: 2, 4, 6, 8, 10// 增加过滤条件(能被2整除的元素乘2), 数组进行准换val filteredArr = arr.filter(x => x % 2 == 0).map(x => x * 2)// 打印转换后的数组println(filteredArr.mkString(", ")) // 输出: 4, 8

在上述示例中, 我们创建了一个整数数组 arr , 然后使用 map 函数对数组中的每个元素进行乘2操作(使用 filter 函数对数组元素进行过滤), 得到一个新的数组, 打印转换后的数组内容 ;

通过使用 map 函数, 可以方便地对数组进行转换操作 .

5- 常用算法

在Scala中, 数组常用的算法包括求和、查找最大最小值、排序以及显示数组内容等操作;

示例:

  1. 求和
    // 数组求和val arr = Array(1, 2, 3, 4, 5)val sum = arr.sumprintln(s"数组元素之和为: $sum") // 输出: 数组元素之和为: 15
  1. 查找最大最小值
    // 查找数组最大最小值val arr = Array(10, 12, 31, 24, 5)val max = arr.maxval min = arr.minprintln(s"max: $max, min: $min") // 输出: max: 31, min: 5
  1. 排序
    // 数组排序val arr = Array(1, 3, 2, 5, 4)val sortedArr = arr.sortedprintln("数组排序后: " + sortedArr.mkString(",")) // 输出: 数组排序后: 1,2,3,4,5
  1. 显示数组内容
    // 显示数组内容val arr = Array("lyf", "wdf", "fkc")for (i <- 0 until arr.length) {println(arr(i)) // 输出: lyf wdf kfc}for (i <- arr) {println(i) // 输出: lyf wdf kfc}for (i <- arr.indices) {println(arr(i)) // 输出: lyf wdf kfc}println(arr.mkString(", ")) // 输出: lyf, wdf, kfcarr.foreach(println) // 输出: lyf wdf kfc

6- 多维数组

在Scala中, 可以使用多维数组来表示多维数据结构;

通常, 可以使用数组的数组 (Array of Array) 来实现多维数组 ;

示例:

    // 创建一个二维数组表示矩阵val matrix = Array.ofDim[Int](3, 3)// 初始化二位数组matrix(0) = scala.Array(1, 2, 3)matrix(1) = scala.Array(4, 5, 6)matrix(2) = scala.Array(7, 8, 9)// 访问二维数组中的元素val element = matrix(1)(2)println(s"二维数组中第二行第三列的元素为: $element") // 输出: 二维数组中第二行第三列的元素为: 6
    // 创建一个二维数组val matrix = Array.ofDim[Int](3, 4)// 初始化二维数组for (i <- 0 until matrix.length) {for (j <- 0 until matrix(i).length) {matrix(i)(j) = i * j}}// 打印二维数组for (i <- 0 until matrix.length) {for (j <- 0 until matrix(i).length) {print(matrix(i)(j) + " ")}println() // 换行}/*输出:0 0 0 0 0 1 2 3 0 2 4 6 */
    // 创建一个二维数组val matrix = Array.ofDim[Int](2, 2)// 初始化二维数组matrix(0)(0) = 1matrix(0)(1) = 2matrix(1)(0) = 3matrix(1)(1) = 4for (i <- 0 until matrix.length) {for (j <- 0 until matrix(i).length) {print(matrix(i)(j) + " ")}println()}/*输出:1 23 4*/

上面示例创建了不同大小的二维数组, 并使用不同的方法初始化二维数组, 访问了二维数组的一个元素或遍历二维数组 .

end

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

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

相关文章

GPT-4o 引领人机交互新风向的向量数据库Milvus Cloud 成本

成本 AIGC 时代对于冷热储存的呼唤 成本一直是向量数据库获得更广泛使用的最大阻碍之一,这个成本来自两点: 储存,绝大多数向量数据库为了保证低延迟,需要把数据全量缓存到内存或者本地磁盘。在这个动辄百亿量级的AI 时代,意味着几十上百 TB 的资源消耗。 计算,数据需…

OpenFeign高级用法:缓存、QueryMap、MatrixVariable、CollectionFormat优雅地远程调用

码到三十五 &#xff1a; 个人主页 微服务架构中&#xff0c;服务之间的通信变得尤为关键。OpenFeign&#xff0c;一个声明式的Web服务客户端&#xff0c;使得REST API的调用变得更加简单和优雅。OpenFeign集成了Ribbon和Hystrix&#xff0c;具有负载均衡和容错的能力&#xff…

线性回归模型之套索回归

概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…

NegativePrompt:利用心理学通过负面情绪刺激增强大型语言模型

【摘要】大型语言模型 (LLM) 已成为各种应用不可或缺的一部分&#xff0c;从传统的计算任务到高级人工智能 (AI) 应用。这种广泛的应用促使社会科学等各个学科对 LLM 进行了广泛的研究。值得注意的是&#xff0c;研究表明 LLM 具有情商&#xff0c;可以通过积极的情绪刺激进一步…

C++:深入理解多态

一、多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 那究竟多态的实际价值体现在哪里呢&#xff1f;&#xff1f; 1、举个例子比如说购买高铁票这个行为&…

Spring Boot | SpringBoot 中 自定义 “用户授权管理“ : 自定义“用户访问控制“、自定义“用户登录控制“

目录: 一、SpringBoot 中 自定义 "用户授权管理" ( 总体内容介绍 ) :二、 自定义 "用户访问控制" ( 通过 "HttpSecurity类" 的 authorizeRequests( )方法来实现 "自定义用户访问控制" ) :1.基础项目文件准备2.实现 "自定义身份认…

4. 分布式链路追踪客户端工具包Starter设计

前言 本文将从零搭建分布式链路追踪客户端工具包的Starter&#xff0c;并将在后续文章中逐步丰富支持的场景。这里首先将搭建一个最基础的Starter&#xff0c;能提供的功能和1. 看完这篇文章我奶奶都懂Opentracing了一文中的示例demo类似。 相关版本依赖如下。 opentracing-…

Scala学习2: 控制结构和函数

目录 第二章 控制结构和函数1- 条件表达式2- 语句终止3- 块表达式和赋值4- 输入和输出5- 循环6- 高级for循环和for推到式7- 函数8- 默认参数和带名参数9- 可变参数10- 过程11- 懒值12- 异常end 第二章 控制结构和函数 1- 条件表达式 Scala的 if/esle 语法结构与java一样, 但是…

MySQL表突然卡死,删、查操作加载不停解决办法

今天遇到了MySQL删表的时候卡死情况。然后通过网上查阅资料和项目组沟通&#xff0c;了解到了有多人同时对同一张表进行了操作。我和另一个同事同时进行了删除操作&#xff0c;然后另两位同时进行了查询操作&#xff0c;然后还有一位同事用dolphin调度&#xff0c;用datax采集数…

【SQL】SQL常见面试题总结(4)

目录 1、空值处理1.1、统计有未完成状态的试卷的未完成数和未完成率1.2、0 级用户高难度试卷的平均用时和平均得分 2、高级条件语句2.1、筛选限定昵称成就值活跃日期的用户&#xff08;较难&#xff09;2.2、筛选昵称规则和试卷规则的作答记录&#xff08;较难&#xff09;2.3、…

SmartEDA助力电工基础实验:打造高效、智能的学习新体验

在电工基础实验的教学与学习中&#xff0c;传统的实验设备往往存在着操作复杂、数据处理繁琐等问题&#xff0c;给学生的学习带来了不小的挑战。然而&#xff0c;随着科技的不断发展&#xff0c;一种名为SmartEDA的智能电工实验辅助设备正逐渐走入课堂&#xff0c;以其高效、智…

Es6-对象新增了哪些扩展?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Javascript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Javascript篇专栏内容:Es6-对象新增了哪些扩展&#xff1f; 目录 一、参数 二、属性 函数的length属性 …

Unsupervised Out-of-Distribution Detection with Diffusion Inpainting

Unsupervised Out-of-Distribution Detection with Diffusion Inpainting 摘要1.介绍2 背景3 3. Lift, Map, Detect摘要 无监督的异常分布检测(OOD)旨在通过仅从未标记的域内数据中学习来识别域外数据。我们提出了一种用于此任务的新方法——提升、映射、检测(LMD),该方法…

数据结构-栈(带图)

目录 栈的概念 画图理解栈 栈的实现 fun.h fun.c main.c 栈的概念 栈&#xff08;Stack&#xff09;是一种基本的数据结构&#xff0c;其特点是只允许在同一端进行插入和删除操作&#xff0c;这一端被称为栈顶。遵循后进先出&#xff08;Last In, First Out, LIFO&#…

浏览器下载附件流建议

大文件下载可采用附件流的方式&#xff0c;后端设置一下响应参数&#xff0c;然后以流的方式返回前端 res.set({ "Content-Type": "application/octet-stream", "Content-Disposition": "attachment;filename* UTF-8"fixedEncodeUR…

【论文粗读|arXiv】GaSpCT: Gaussian Splatting for Novel CT Projection View Synthesis

Abstract 本文提出了一种新颖的视图合成和3D场景表示方法&#xff0c;用于为计算机断层扫描&#xff08;CT&#xff09;生成新的投影视图。 方法采用了Gaussian Splatting 框架&#xff0c;基于有限的2D图像投影集&#xff0c;无需运动结构&#xff08;SfM&#xff09;方法&am…

CSPM-4是什么?报考条件有哪些?

2021年10月&#xff0c;《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系&#xff0c;开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会&#xff08;CAS&#xff09;组织开展的项目管理专业人员能力评价…

Swift 5.9 中 if 与 switch 语句简洁新语法让撸码更带劲

概览 在实际代码开发中&#xff0c;可能初学 Swift 语言的小伙伴们在撸码时最常用的得数 if 和 switch…case 条件选择语句了。不过在某些场景下它们显得略有那么一丢丢“矫揉造作”&#xff0c;还好从 Swift 5.9 开始苹果知趣的为其简化了语法且增强了它们的表现力。 在本篇…

Vitis HLS 学习笔记--优化本地存储器访问瓶颈

目录 1. 简介 2. 代码解析 2.1 原始代码 2.2 优化后 2.3 分析优化措施 3. 总结 1. 简介 在Vitis HLS中&#xff0c;实现II&#xff08;迭代间隔&#xff09; 1是提高循环执行效率的关键。II1意味着每个时钟周期都可以开始一个新的迭代&#xff0c;这是最理想的情况&…

Java实现音频转文本(语音识别)

在Java中实现音频转文本&#xff08;也称为语音识别或ASR&#xff09;通常涉及使用专门的语音识别服务&#xff0c;如Google Cloud Speech-to-Text、IBM Watson Speech to Text、Amazon Transcribe、Microsoft Azure Speech Services&#xff0c;或者一些开源库如CMU Sphinx。 …