【Kotlin 入門指南】Map 集合

閱讀時間約 3 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

Map 集合

Map 集合,它以 key-value 的方式儲存資料,並確保每個 key 都是獨一無二的。在 Kotlin 中,透過 mapOf 可建立不可變的 Map 集合,這表示一旦初始化資料就無法再做增、刪、改的動作。相對地,使用 MutableMap 則能讓你動態地新增、移除、讀取和修改所有資料。

使用 mapOf 建立不可變 Map 集合

在 Kotlin 中,Map 只能一開始初始資料和事後讀取元素,之後不能進行增、刪、修。

// 建立一個不可變的 Map 集合
val map = mapOf("1" to 666, "2" to 777)
println(map) // 輸出:{1=666, 2=777}

在這個例子中,我們使用 mapOf 函數建立了一個名為 map 的 Map 集合,其中包含了兩組 key-value 對。這裡的 key 分別為 "1""2",而對應的 values 則為 666777

然而,需要注意的是,這樣的 Map 集合在建立後就變成了不可變的,也就是說無法在後續的程式執行中對其進行元素的增加、刪除或修改操作。這是因為我們使用了 val 來宣告這個 Map 集合,使其成為了一個不可變的引用,其內容無法被修改。

若我們嘗試對這樣的不可變 Map 集合進行修改,例如增加一個新的 key-value 對,就會出現編譯錯誤:

// 嘗試修改不可變的 Map 集合,會產生編譯錯誤
map["3"] = 888 // 編譯錯誤:Val cannot be reassigned

在這個範例中,嘗試在不可變的 Map 集合 map 中新增一個 key 為 "3"、value 為 888 的元素,但由於該集合為不可變的,因此編譯器會報錯指出無法重新指派值給不可變變數。

使用 MutableMap 建立可變 Map 集合

若需要事後可以修改,需使用 MutableMap 集合操作新增、移除、讀取、全部刪除資料:

// 建立一個 MutableMap
var mutableMap: MutableMap<String, Int> = mutableMapOf()

// 新增資料
mutableMap["1"] = 666
mutableMap["2"] = 777
mutableMap["3"] = 888

println("新增資料後的集合:$mutableMap")

// 移除資料
mutableMap.remove("1")
println("移除 key 為 \"1\" 後的集合:$mutableMap")

// 獲取資料
val valueForKey2 = mutableMap["2"]
println("key 為 \"2\" 的值:$valueForKey2")

// 刪除所有資料
mutableMap.clear()
println("刪除所有資料後的集合:$mutableMap")

Map 集合常用的方法

- put(key: K, value: V):新增或更新指定鍵的值。如果鍵不存在,則新增一個鍵值對,否則更新現有的鍵值對。
- putAll(from: Map<out K, V>):從另一個 Map 中複製所有的鍵值對到目前的 MutableMap 中。
- remove(key: K):移除指定鍵的鍵值對。
- clear():清空所有的鍵值對。
- containsKey(key: K):檢查指定的鍵是否存在於 MutableMap 中。
- containsValue(value: V):檢查指定的值是否存在於 MutableMap 中。
- getOrDefault(key: K, defaultValue: V):根據指定的鍵查詢對應的值,如果鍵不存在,則返回預設值。
- getOrElse(key: K, defaultValue: (K) -> V):根據指定的鍵查詢對應的值,如果鍵不存在,則通過 defaultValue - 函數生成預設值。
- keys:返回包含所有鍵的集合。
- values:返回包含所有值的集合。
- entries:返回包含所有鍵值對的集合。
- isEmpty():檢查 MutableMap 是否為空。
- size:返回 MutableMap 中鍵值對的數量。
avatar-img
10會員
231內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
List 集合特性:按照順序排列,可以放重覆的物件
Kotlin 中的 when 條件控制是一個強大的結構,類似於其他語言中的 switch…case…。它可以根據不同的條件值,執行不同的程式碼塊。
在 Kotlin 中,if 條件控制,讓你能夠根據條件的成立與否來執行不同的程式碼塊。它可以被單獨使用,也可以與 else 搭配使用,為程式添加更多的邏輯控制。
Kotlin 的字串資料類型代表文字的資料型別,使用雙引號括起來。此外,Kotlin 還支援字串模板,讓在字串中插入變數和表達式更加容易。 除此之外,Kotlin 還提供了許多內建的字串函數,像是 substring() 和 replace(),幫助更輕鬆地處理和操作字串。
Kotlin 的 Boolean 資料類型代表布林值,即 true 或 false。通常用於條件語句、邏輯運算和其他需要布林值的地方。
List 集合特性:按照順序排列,可以放重覆的物件
Kotlin 中的 when 條件控制是一個強大的結構,類似於其他語言中的 switch…case…。它可以根據不同的條件值,執行不同的程式碼塊。
在 Kotlin 中,if 條件控制,讓你能夠根據條件的成立與否來執行不同的程式碼塊。它可以被單獨使用,也可以與 else 搭配使用,為程式添加更多的邏輯控制。
Kotlin 的字串資料類型代表文字的資料型別,使用雙引號括起來。此外,Kotlin 還支援字串模板,讓在字串中插入變數和表達式更加容易。 除此之外,Kotlin 還提供了許多內建的字串函數,像是 substring() 和 replace(),幫助更輕鬆地處理和操作字串。
Kotlin 的 Boolean 資料類型代表布林值,即 true 或 false。通常用於條件語句、邏輯運算和其他需要布林值的地方。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
Thumbnail
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
Thumbnail
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
Thumbnail
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
Thumbnail
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
Thumbnail
所謂專案,就是項目,或者說是主題。 比如說我今天打算寫個猜數字遊戲,於是就建立一個名為「猜數字」的專案。 如果要和外國人合作開發,專案名稱取英文會比較好,雖然不是每個外國人英文都很好,但是工程師要有基本的英文閱讀能力,科技界很多第一手消息都是英文,我們用的開發介面 Intellij IDEA
也許有人聽過, Kotlin 是物件導向語言。 既然都特別提了,肯定還有其他種語言,那就是程序導向語言。 最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
到官方網站 https://www.jetbrains.com/idea/ 下載名為 IntelliJ IDEA 的 IDE (整合開發環境:意味著撰寫、編譯、連結、除錯、執行等步驟全都包)。 因為安裝只要按照預設選項不停地點下一步,所以就不另做說明了,如果讀者有遇到安裝問題,可以留言提問。
Thumbnail
這幾天參加了 Kotlin Hero 程式競賽前的練習,有個特別的體驗。 看題目一邊理解題意時,一邊就會在心理想像出程式流程的設計長得怎麼樣,比如輸入數值的型態為何?需不需要字串拆解?用什麼迴圈或遞迴編碼結構?一邊實作出來。或是歸納題意後,用數學運算公式整理簡化,比如真值表簡化換算,或是套用等差級數
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
Thumbnail
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
Thumbnail
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
Thumbnail
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
Thumbnail
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
Thumbnail
所謂專案,就是項目,或者說是主題。 比如說我今天打算寫個猜數字遊戲,於是就建立一個名為「猜數字」的專案。 如果要和外國人合作開發,專案名稱取英文會比較好,雖然不是每個外國人英文都很好,但是工程師要有基本的英文閱讀能力,科技界很多第一手消息都是英文,我們用的開發介面 Intellij IDEA
也許有人聽過, Kotlin 是物件導向語言。 既然都特別提了,肯定還有其他種語言,那就是程序導向語言。 最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
到官方網站 https://www.jetbrains.com/idea/ 下載名為 IntelliJ IDEA 的 IDE (整合開發環境:意味著撰寫、編譯、連結、除錯、執行等步驟全都包)。 因為安裝只要按照預設選項不停地點下一步,所以就不另做說明了,如果讀者有遇到安裝問題,可以留言提問。
Thumbnail
這幾天參加了 Kotlin Hero 程式競賽前的練習,有個特別的體驗。 看題目一邊理解題意時,一邊就會在心理想像出程式流程的設計長得怎麼樣,比如輸入數值的型態為何?需不需要字串拆解?用什麼迴圈或遞迴編碼結構?一邊實作出來。或是歸納題意後,用數學運算公式整理簡化,比如真值表簡化換算,或是套用等差級數