Kotlin的Map

在 Kotlin 中,Map 是一種鍵值對的集合數據結構,用于存儲一組關聯的鍵和值。Kotlin 標準庫提供了 Map 接口和多種實現類,使得操作和處理鍵值對數據更加方便。下面詳細描述 Kotlin 的 Map 的用法:

創建 Map

Kotlin 提供了幾種方式來創建 Map:

使用 mapOf() 函數創建具有指定內容的只讀映射,并以成對的列表的形式給出,其中第一個值為鍵,第二個為值。

val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)

使用 mutableMapOf() 函數創建可變映射:

val mutableMap: MutableMap<String, String> = mutableMapOf("apple" to "red", "banana" to "yellow")

基本操作

獲取值:

package com.zetcodefun main() {val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println(items["Tom"])println(items.getValue("Tom"))println(items.get("Tom"))println(items.getOrDefault("Tom", 0))println(items.getOrDefault("Tom", 0))val nOfPencils = items.getOrElse("Tom", { 0 })println(nOfPencils)
}

獲取大小:

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("${items.size},${items.count()}")

獲取所有元素,鍵,值

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("${items.entries},${items.keys},${items.values}")

判斷是否包含鍵:

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println("Lisa" in items)

containsKey()檢查映射是否包含密鑰,containsValue()檢查映射是否包含值

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)println(items.containsKey("Lisa"))

可變映射特有操作

添加或修改鍵值對

    val items = mutableMapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)items["Lisa"]=20items["Tab"]=34println(items.entries)

刪除鍵值對

items.remove("apple")

清空map

items.clear()

Map遍歷

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)for ((k,v) in items){println("$k,$v")}items.forEach{(k,v)->println("$k,$v")}

Map 擴展函數

Kotlin 標準庫提供了豐富的擴展函數來操作 Map,如 filterKeys、filterValues、mapValues、keys 等。

    val items = mapOf("Lisa" to 12, "Tom" to 45, "Bob" to 33, "Lili" to 2)val mappedMap = items.mapValues { it.value * 2  }println(mappedMap)val filtered = items.filterKeys { it == "Lisa" || it == "Tom" }println(filtered)val filtered2 = items.filterValues { it >= 70 }println(filtered2)val filtered3 = items.filter { it.key == "Bob" || it.value == 50 }

Map 的實現類:
Kotlin 提供了幾種 Map 的實現類,其中最常用的是 HashMap 和 LinkedHashMap:

HashMap:無序的鍵值對集合,內部使用哈希表實現,適用于快速查找。
LinkedHashMap:有序的鍵值對集合,內部使用鏈表和哈希表實現,保持鍵的插入順序。
可變 Map 和不可變 Map:
Kotlin 中的 Map 可以分為可變(MutableMap)和不可變(Map)兩種類型。可變 Map 允許添加、刪除和修改鍵值對,不可變 Map 則不能改變其內容。

val immutableMap: Map<String, Int> = mapOf("one" to 1, "two" to 2)
val mutableMap: MutableMap<String, String> = mutableMapOf("apple" to "red", "banana" to "yellow")

注意事項:
Map 中的鍵是唯一的,每個鍵關聯一個值。
不同于列表或集合,Map 是一種具有鍵值對結構的數據類型。
Map 的性能取決于底層數據結構,如 HashMap 的查找效率較高。
總之,Kotlin 的 Map 是一種用于存儲鍵值對的數據結構,提供了豐富的操作和處理功能。通過選擇合適的實現類和了解常用操作,可以更高效地處理鍵值對數據。

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

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

相關文章

SQL力扣練習(十一)

目錄 1.樹節點(608) 示例 1 解法一(case when) 解法二(not in) 2.判斷三角形(610) 示例 1 解法一(case when) 解法二(if) 解法三(嵌套if) 3.只出現一次的最大數字(619) 示例 1 解法一(count limit) 解法二(max) 4.有趣的電影(620) 解法一 5.換座位(626) 示例 …

同步jenkinsfile流水線(sync-job)

環境 變量&#xff1a;env&#xff08;環境變量&#xff1a;sit/dev/simulation/prod/all&#xff09;&#xff0c;job&#xff08;job-name/all&#xff09;目錄&#xff1a;/var/lib/jenkins/jenkinsfile environment.json&#xff1a; [roottest-01 jenkinsfile]# cat env…

C++ string類的模擬實現

模擬實現string類不是為了造一個更好的輪子&#xff0c;而是更加理解string類&#xff0c;從而來掌握string類的使用 string類的接口設計繁多&#xff0c;故而不會全部涵蓋到&#xff0c;但是核心的會模擬實現 庫中string類是封裝在std的命名空間中的&#xff0c;所以在模擬…

webpack5和webpack4的一些區別

自動清除打包目錄 webpack4 // bash npm i clean-webpack-plugin -D //webpack.config.js const {CleanWebpackPlugin} require(clean-webpack-plugin); module.exports {plugins: [new CleanWebpackPlugin()} } webpack5 module.exports {output: {clean: true} } topLevel…

使用PostgreSQL構建強大的Web應用程序:最佳實踐和建議

PostgreSQL是一個功能強大的開源關系型數據庫,它擁有廣泛的用戶群和活躍的開發社區。越來越多的Web應用選擇PostgreSQL作為數據庫 backend。如何充分利用PostgreSQL的特性來構建健壯、高性能的Web應用?本文將給出一些最佳實踐和建議。 一、選擇合適的PostgreSQL數據類型 Pos…

【Vue】Mixin 混入

Vue Mixin 混入 1.簡介 混入&#xff08;mixin&#xff09;提供了一種非常靈活的方式&#xff0c;來分發 Vue 組件中的可復用功能。一個混入對象可以包含任意組件選項&#xff08;如data、methods、mounted等等&#xff09;。當組件使用混入對象時&#xff0c;所有混入對象的…

Java將時間戳轉化為特定時區的日期字符串

先上代碼&#xff1a; ZonedDateTime dateTime ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()),zone ); //2019-12-01T19:01:4608:00String formattedDate dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd") ); //2019-12-…

.git內存清理方式

查看前15個大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk {print$1})"刪除文件夾&#xff08;public/housimg文件夾目錄&#xff09; git filter-branch --tree-filter rm -rf publ…

解決使用element ui時el-input的屬性type=number,仍然可以輸入e的問題。

使用element ui時el-input的屬性typenumber&#xff0c;仍然可以輸入e&#xff0c; 其他的中文特殊字符都不可以輸入&#xff0c;但是只有e是可以輸入的&#xff0c;原因是e也輸入作為科學計數法的時候&#xff0c;e是可以被判定為數字的&#xff0c; 但是有些場景是需要把e這種…

DICOM圖像的常用一些參數解析

醫學圖像DICOM醫學影像文件格式詳解 Dicom文件基本操作 DICOM圖像參數&#xff1f; 像素&#xff1a;構成圖片的小色點。圖像每個維度的像素個數——該維度一共有多少個均勻分布的像素點。 分辨率&#xff08;單位DPI&#xff09;&#xff1a;每英寸&#xff08;Inch&#xf…

鴻蒙剝離 AOSP 不兼容 Android 熱門問題匯總,不吹不黑不吵

上周發了一篇 《鴻蒙終于不套殼了&#xff1f;純血 HarmonyOS NEXT 即將到來》的相關資訊&#xff0c;沒想到大家「討&#xff08;fa&#xff09;論&#xff08;xie&#xff09;」的熱情很高&#xff0c;莫名蹭了一波流量&#xff0c;雖然流量對我來說也沒什么用&#xff0c;但…

私密數據采集:隧道爬蟲IP技術的保密性能力探究

作為一名專業的爬蟲程序員&#xff0c;今天要和大家分享一個關鍵的技術&#xff0c;它能夠為私密數據采集提供保密性能力——隧道爬蟲IP技術。如果你在進行敏感數據采集任務時需要保護數據的私密性&#xff0c;那么這項技術將是你的守護神。 在進行私密數據采集任務時&#xff…

不了解UI設計需要掌握的技能? 優漫動游

很多人聽說過UI設計行業&#xff0c;知道它是用來制作界面的高薪技術&#xff0c;但對于做UI設計需要什么技能卻不是很清楚。且看本文的分析。? 不了解UI設計需要掌握的技能&#xff1f; ??UI設計是英文User和interface的縮寫&#xff0c;是指對軟件的人機交互、操作邏輯、界…

Java基礎知識題(二)

系列文章目錄 Java基礎知識題(一) 文章目錄 系列文章目錄 前言 1. Java中的 組合、聚合和關聯有什么區別&#xff1f; 2. 解釋為什么Java被稱作是“平臺無關的編程語言”&#xff1f; 3. 簡述什么是值傳遞和引用傳遞&#xff1f;重點 4. 詳細闡述Java進程和線程的區別 …

Java # JVM

一、1.8之前 運行時數據區&#xff08;進程共享&#xff09; 運行時常量池為什么要有方法區&#xff1a; jvm完成類裝載后&#xff0c;需要將class文件中的常量池轉入內存&#xff0c;保存在方法區中為什么是常量&#xff1a; 常量對象操作較多&#xff0c;為了避免頻繁創建和…

圖像去雨-雨線清除-圖像處理-(計算機作業附代碼)

背景 多年來&#xff0c;圖像去雨已經被廣泛研究&#xff0c;使用傳統方法和基于學習的方法。然而&#xff0c;傳統方法如高斯混合模型和字典學習方法耗時&#xff0c;并且無法很好地處理受到嚴重雨滴影響的圖像塊。 算法 通過考慮雨滴條狀特性和角度分布&#xff0c;這個問…

【Leetcode】98. 驗證二叉搜索樹

一、題目 1、題目描述 給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。示例1: 輸入:root = …

馬上七夕到了,用各種編程語言實現10種浪漫表白方式

目錄 1. 直接表白&#xff1a;2. 七夕節表白&#xff1a;3. 猜心游戲&#xff1a;4. 浪漫詩句&#xff1a;5. 愛的方程式&#xff1a;6. 愛心Python&#xff1a;7. 心形圖案JavaScript 代碼&#xff1a;8. 心形并顯示表白信息HTML 頁面&#xff1a;9. Java七夕快樂&#xff1a;…

QT的布局與間隔器介紹

布局與間隔器 1、概述 QT中使用絕對定位的布局方式&#xff0c;無法適用窗口的變化&#xff0c;但是&#xff0c;也可以通過尺寸策略來進行 調整&#xff0c;使得 可以適用窗口變化。 布局管理器作用最主要用來在qt設計師中進行控件的排列&#xff0c;另外&#xff0c;布局管理…