2:kotlin集合(Collections)

集合有助于數據分組,方便后續操作

集合類型說明
Lists有序的可重復的集合
Sets無序的不可重復的集合
Maps鍵值對映射集合,鍵唯一,且一個鍵只能映射到一個值

每個集合類型都可以是可變的或者只讀的

List

List按照添加的順序存儲內容,并允許重復

存儲的內容通常稱作元素

List類型

創建只讀List使用listOf()方法

創建可變List使用mutableListOf()方法

在創建列表時,Kotlin可以推斷存儲項的類型。可以在列表聲明后的尖括號<>中添加類型來顯式聲明類型

fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println(readOnlyShapes) // [triangle, square, circle]val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")println(shapes) // [triangle, square, circle]shapes[2] = "circle2"// shapes[3] = "circle3"   // Index 3 out of bounds for length 3println(shapes) // [triangle, square, circle2]
}

操作MutableList索引不能超過初始長度

為了防止不必要的修改,你可以通過將可變列表賦值給List來獲得它們的只讀視圖

fun main() {val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")val shapesLocked: List<String> = shapes
}

這種方式通常叫做鑄造(casting)

List常用方法

查看List方法

獲取元素

fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("The first item in the list is: ${readOnlyShapes[0]}")  // The first item in the list is: triangleprintln("The first item in the list is: ${readOnlyShapes.first()}") // The first item in the list is: triangleprintln("The last item in the list is: ${readOnlyShapes.last()}")   // The last item in the list is: circle
}

獲取長度

fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("This list has ${readOnlyShapes.count()} items") // This list has 3 items
}   

判斷是否包含某一元素

fun main() {val readOnlyShapes = listOf("triangle", "square", "circle")println("circle" in readOnlyShapes) // true
}

新增和刪除

fun main() {val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")// 添加 "pentagon"shapes.add("pentagon")println(shapes) // [triangle, square, circle, pentagon]// 刪除第一個 "pentagon"shapes.remove("pentagon")println(shapes) // [triangle, square, circle]
}

Set

Set集合中存儲的數據無序并且不能重復

Set類型

創建只讀Set使用setOf()方法

創建可變Set使用MutableList()方法

fun main() {val readOnlyFruit = setOf("apple", "banana", "cherry", "cherry")val fruit: MutableSet<String> = mutableSetOf("apple", "banana", "cherry", "cherry")
}

Set常用方法

獲取元素

因為Set為無序集合,所以不能通過索引獲取集合元素

fun main() {val set = setOf("apple", "banana", "cherry", "cherry")println("The first item in the set is: ${set.first()}") // The first item in the set is: appleprintln("The last item in the set is: ${set.last()}") //  The last item in the set is: cherry
}

Map

Map以鍵值對的形式存儲數據。你可以通過引用鍵來訪問值

鍵是唯一的,如果插入重復鍵則會覆蓋之前的值

Map類型

要創建只讀Map,使用mapOf()函數
要創建可變地圖MutableMap,使用mutableMapOf()函數

在創建Map時,kotlin可以推斷出存儲的元素類型。要顯式聲明類型,可以在Map聲明后的尖括號<>中添加鍵和值的類型。例如:MutableMap<String, Int>。鍵的類型為String,值的類型為Int

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu)  // {apple=100, kiwi=190, orange=100}val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(juiceMenu)  // {apple=100, kiwi=190, orange=100}
}

常用方法

獲取數據

使用鍵獲取值

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu["apple"]) // 100
}

獲取所有的鍵或者值

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.keys) // [apple, kiwi, orange]println(readOnlyJuiceMenu.values)   // [100, 190, 100]
}

獲取鍵值對數量

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.count()) // 3
}

修改/刪除

fun main() {val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)juiceMenu.put("coconut", 150) // 添加鍵"coconut"和值 150println(juiceMenu) // {apple=100, kiwi=190, orange=100, coconut=150}juiceMenu.put("apple", 200) // 修改"coconut"的值成 200println(juiceMenu) // {apple=200, kiwi=190, orange=100, coconut=150}juiceMenu.remove("orange")    // 刪除"orange"println(juiceMenu)  // {apple=200, kiwi=190, coconut=150}
}

是否包含某元素

是否包含某個鍵

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(readOnlyJuiceMenu.containsKey("kiwi"))  // trueprintln("orange" in readOnlyJuiceMenu.keys) // true
}

是否包含某個值

fun main() {val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)println(200 in readOnlyJuiceMenu.values)  // false
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161551.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161551.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161551.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux進程通信——共享內存

概念 共享內存&#xff08;Shared Memory&#xff09;&#xff0c;指兩個或多個進程共享一個給定的存儲區。 特點 共享內存是最快的一種 IPC&#xff0c;因為進程是直接對內存進行存取。 因為多個進程可以同時操作&#xff0c;所以需要進行同步。 信號量共享內存通常結合在一…

Open3D (C++) 計算兩點云之間的最小距離

目錄 一、 算法原理二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲與GPT。 一、 算法原理 Open3D中ComputePointCloudDistance函數提供了計算從源點云到目標點云的距離的方法,計算點云的距離。也…

python數據結構與算法-05_棧

棧 棧這個詞實際上在計算機科學里使用很多&#xff0c;除了數據結構外&#xff0c;還有內存里的棧區 &#xff08;和堆對應&#xff09;&#xff0c;熟悉 C 系語言的話應該不會陌生。 上一章我們講到了先進先出 queue&#xff0c;其實用 python 的內置類型 collections.deque …

【C語法學習】26 - strcmp()函數

文章目錄 1 函數原型2 參數3 返回值4 比較機制5 示例5.1 示例1 1 函數原型 strcmp()&#xff1a;比較str1指向的字符串和str2指向的字符串&#xff0c;函數原型如下&#xff1a; int strcmp(const char *str1, const char *str2);2 參數 strcmp()函數有兩個參數str1和str2&a…

HCIP-四、MUX-vlanSuper-vlan+端口安全

四、MUX-vlan&Super-vlan端口安全 MUX-vlan實驗拓撲實驗需求及解法1. 在SW1/2/3分別創建vlan10 20 30 402. SW1/2/3之間使用trunk鏈路&#xff0c;僅允許vlan10 20 30 40 通過。3. SW與PC/Server之間使用access鏈路。4. ping驗證&#xff1a; Super-vlan端口安全實驗拓撲實…

【騰訊云云上實驗室-向量數據庫】騰訊云開創新時代,發布全新向量數據庫Tencent Cloud VectorDB

前言 隨著人工智能、數據挖掘等技術的飛速發展&#xff0c;海量數據的存儲和分析越來越成為重要的研究方向。在海量數據中找到具有相似性或相關性的數據對于實現精準推薦、搜索等應用至關重要。傳統關系型數據庫存在一些缺陷&#xff0c;例如存儲效率低、查詢耗時長等問題&…

CentOS使用docker安裝OpenGauss數據庫

1.搜索OpenGauss docker search opengauss 2.選擇其中一個源拉取 docker pull docker.io/enmotech/opengauss 3.運行OpenGauss docker run --name opengauss --privilegedtrue --restartalways -d -e GS_USERNAMEpostgres -e GS_PASSWORDmyGauss2023 -p 5432:5432 docker.…

黑馬React18: ReactRouter

黑馬React: ReactRouter Date: November 21, 2023 Sum: React路由基礎、路由導航、導航傳參、嵌套路由配置 路由快速上手 1. 什么是前端路由 一個路徑 path 對應一個組件 component 當我們在瀏覽器中訪問一個 path 的時候&#xff0c;path 對應的組件會在頁面中進行渲染 2. …

2023年中國高壓驅動芯片分類、市場規模及發展趨勢分析[圖]

高壓驅動芯片是一種能在高壓環境下工作的集成電路&#xff0c;主要用于控制和驅動各種功率器件&#xff0c;如繼電器、電磁閥、電機、變頻器等。高壓驅動芯片根據其輸出電流的大小和形式可分為兩類恒流型和開關型。 高壓驅動芯片分類 資料來源&#xff1a;共研產業咨詢&#x…

藍橋杯算法雙周賽心得——迷宮逃脫(記憶化搜索)

大家好&#xff0c;我是晴天學長&#xff0c;非常經典實用的記憶化搜索題&#xff0c;當然也可以用dp做&#xff0c;我也會發dp的題解&#xff0c;需要的小伙伴可以關注支持一下哦&#xff01;后續會繼續更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宮逃脫 迷官逃脫…

ubuntu操作系統中docker下Hadoop分布式前置環境配置實驗

版本&#xff1a; centos7 hadoop 3.1.3 java JDK:1.8 集群規劃&#xff1a; masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器&#xff1a; 把普通用戶加入到docker組&am…

opencv-Canny 邊緣檢測

Canny邊緣檢測是一種經典的圖像邊緣檢測算法&#xff0c;它在圖像中找到強度梯度的變化&#xff0c;從而識別出圖像中的邊緣。Canny邊緣檢測的優點包括高靈敏度和低誤檢率。 在OpenCV中&#xff0c;cv2.Canny() 函數用于執行Canny邊緣檢測。 基本語法如下&#xff1a; edges…

代碼隨想錄 134. 加油站

題目 在一條環路上有 n 個加油站&#xff0c;其中第 i 個加油站有汽油 gas[i] 升。 你有一輛油箱容量無限的的汽車&#xff0c;從第 i 個加油站開往第 i1 個加油站需要消耗汽油 cost[i] 升。你從其中的一個加油站出發&#xff0c;開始時油箱為空。 給定兩個整數數組 gas 和 cos…

本地訓練,開箱可用,Bert-VITS2 V2.0.2版本本地基于現有數據集訓練(原神刻晴)

按照固有思維方式&#xff0c;深度學習的訓練環節應該在云端&#xff0c;畢竟本地硬件條件有限。但事實上&#xff0c;在語音識別和自然語言處理層面&#xff0c;即使相對較少的數據量也可以訓練出高性能的模型&#xff0c;對于預算有限的同學們來說&#xff0c;也沒必要花冤枉…

阿里云 ACK 新升級,打造智算時代的現代化應用平臺

云布道師 今天&#xff0c;能想到的或是想不到的領域&#xff0c;對容器和 Kubernetes 的需求都居高不減&#xff0c;使這項技術正在真正走向無處不在。 在 2023 云棲大會上&#xff0c;阿里云云原生產品線容器服務負責人易立關于容器服務 ACK 在本屆亞運會上應用的介紹&#…

[crash] cxa_pure_virtual 崩潰分析與原理

摘要&#xff1a;工作過程中處理線上的崩潰時發現了一例cxa_pure_virtual相關的crash&#xff0c;直接看堆棧基本山很容易確認是有異步調用導致出發了ABI的異常。但是對于為什么會觸發cxa_pure_virtual雖然有大致的猜測但是沒有直接的證據&#xff0c;因此本文主要描述觸發該類…

C/C++未定義行為的例子匯總

一、什么是未定義行為&#xff1f; 未定義行為&#xff08;Undefined Behavior&#xff09;是指C語言標準未做規定的行為。同時&#xff0c;標準也從沒要求編譯器判斷未定義行為&#xff0c;所以這些行為有編譯器自行處理&#xff0c;在不同的編譯器可能會產生不同的結果&#…

ElasticSearch之cat aliases API

執行aliases命令&#xff0c;如下&#xff1a; curl -X GET "https://localhost:9200/_cat/aliases?pretty&vtrue" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下&#xff1a; alias index …

在 VSCode 中使用 GDB 進行 C/C++ 程序調試(圖文版)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言&#xff0c;數據結構&#xff0c;Linux基礎&#xff0c;ARM開發板&#xff0c;網絡編程等領域UP&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff0…

webpack loader

1、分類 2、執行順序 配置類型 執行順序是 loader1>loader2>loader3 3、使用方式 自己的第一個loader 同步loader /*** loader 就是一個函數* 當webpack 解釋資源時&#xff0c; 會調用相應的loader去處理* loader 接收到文件內容作為參數&#xff0c;返回文件內容* p…