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.pswp.cn/web/13404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13404.shtml
英文地址,請注明出處:http://en.pswp.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。 …