Kotlin集合全解析:List和Map高頻操作手冊

Kotlin 中 Map 和 List 常用功能總結

List 常用功能

創建 List

val immutableList = listOf(1, 2, 3)  // 不可變列表
val mutableList = mutableListOf("a", "b", "c")  // 可變列表
val emptyList = emptyList<String>()  // 空列表

基本操作

val size = list.size  // 獲取大小
val isEmpty = list.isEmpty()  // 是否為空
val contains = list.contains("a")  // 是否包含元素
val index = list.indexOf("b")  // 元素索引
val element = list[1]  // 獲取元素

遍歷 List

list.forEach { println(it) }  // 遍歷元素
list.forEachIndexed { index, element -> println("$index: $element") }  // 帶索引遍歷

過濾和轉換

val filtered = list.filter { it > 2 }  // 過濾
val mapped = list.map { it * 2 }  // 轉換
val flatMapped = list.flatMap { listOf(it, it + 1) }  // 扁平化轉換

排序

val sorted = list.sorted()  // 自然排序
val sortedDesc = list.sortedDescending()  // 降序排序
val customSorted = list.sortedBy { it.length }  // 自定義排序

查找

val first = list.first()  // 第一個元素
val last = list.last()  // 最后一個元素
val firstMatch = list.first { it > 2 }  // 第一個匹配條件的元素
val anyMatch = list.any { it > 2 }  // 是否有元素匹配條件
val allMatch = list.all { it > 2 }  // 是否所有元素都匹配條件

可變 List 操作

mutableList.add("d")  // 添加元素
mutableList.add(1, "x")  // 在指定位置插入
mutableList.remove("a")  // 移除元素
mutableList.removeAt(0)  // 移除指定位置元素
mutableList[0] = "A"  // 修改元素
mutableList.clear()  // 清空列表

Map 常用功能

創建 Map

val immutableMap = mapOf("a" to 1, "b" to 2)  // 不可變Map
val mutableMap = mutableMapOf("x" to 10, "y" to 20)  // 可變Map
val emptyMap = emptyMap<String, Int>()  // 空Map

基本操作

val size = map.size  // 獲取大小
val isEmpty = map.isEmpty()  // 是否為空
val containsKey = map.containsKey("a")  // 是否包含鍵
val containsValue = map.containsValue(1)  // 是否包含值
val value = map["a"]  // 獲取值
val keys = map.keys  // 所有鍵
val values = map.values  // 所有值
val entries = map.entries  // 所有鍵值對

遍歷 Map

map.forEach { (key, value) -> println("$key -> $value") }  // 遍歷鍵值對
map.keys.forEach { println(it) }  // 遍歷鍵
map.values.forEach { println(it) }  // 遍歷值

過濾和轉換

val filtered = map.filter { (key, value) -> value > 10 }  // 過濾
val mapped = map.map { (key, value) -> "$key:${value * 2}" }  // 轉換
val mapKeys = map.mapKeys { it.key.uppercase() }  // 轉換鍵
val mapValues = map.mapValues { it.value * 2 }  // 轉換值

查找

val value = map.getOrDefault("c", 0)  // 獲取值或默認值
val valueOrNull = map["c"]  // 獲取值或null
val firstEntry = map.entries.first()  // 第一個鍵值對

可變 Map 操作

mutableMap["c"] = 30  // 添加/修改值
mutableMap.put("d", 40)  // 添加鍵值對
mutableMap.remove("a")  // 移除鍵值對
mutableMap.putAll(mapOf("e" to 50, "f" to 60))  // 添加多個鍵值對
mutableMap.clear()  // 清空Map

特殊操作

val mergedMap = map1 + map2  // 合并兩個Map
val minusMap = map - "a"  // 移除指定鍵
val defaultMap = map.withDefault { 0 }  // 帶默認值的Map
val groupBy = list.groupBy { it.first() }  // 按條件分組
val associateBy = list.associateBy { it.id }  // 列表轉Map

實用擴展函數

List 實用擴展

list.take(2)  // 取前n個元素
list.drop(2)  // 丟棄前n個元素
list.chunked(3)  // 分塊
list.windowed(3)  // 滑動窗口
list.zip(otherList)  // 合并兩個列表
list.partition { it > 2 }  // 分區

Map 實用擴展

map.filterKeys { it.startsWith("a") }  // 過濾鍵
map.filterValues { it > 10 }  // 過濾值
map.toSortedMap()  // 排序的Map
map.minByOrNull { it.value }  // 找最小值
map.maxByOrNull { it.value }  // 找最大值

這些功能覆蓋了 Kotlin 中 List 和 Map 的大部分常見操作,能夠滿足日常開發中的各種需求。

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

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

相關文章

Yocto項目實戰教程-第7章定制鏡像菜譜與內核菜譜-7.2小節-定制應用程序

&#x1f50d; B站相應的視頻教程&#xff1a; &#x1f4cc; Yocto項目實戰教程-第7章-定制鏡像菜譜與內核菜譜 記得三連&#xff0c;標為原始粉絲,感謝大神支持。 在嵌入式Linux系統開發中&#xff0c;定制專屬應用程序往往是最貼近產品交付的那一環。而Yocto項目&#xff0c…

【圖像輪廓特征查找】圖像處理(OpenCV) -part8

17 圖像輪廓特征查找 圖像輪廓特征查找其實就是他的外接輪廓。 應用&#xff1a; 圖像分割 形狀分析 物體檢測與識別 根據輪廓點進行&#xff0c;所以要先找到輪廓。 先灰度化、二值化。目標物體白色&#xff0c;非目標物體黑色&#xff0c;選擇合適的兒值化方式。 有了輪…

C# 的 字符串插值($) 和 逐字字符串(@) 功能

這段代碼使用了 C# 的 字符串插值&#xff08;$&#xff09; 和 逐字字符串&#xff08;&#xff09; 功能&#xff0c;并在 SQL 語句中動態拼接變量。下面詳細解釋它們的用法&#xff1a; 1. $&#xff08;字符串插值&#xff09; $ 是 C# 的 字符串插值 符號&#xff0c;允許…

mockMvc構建web單元測試學習筆記

web應用本來需要依靠tomcat這個環境運行 現在用mockMvc是為了模擬這個web環境&#xff0c;簡化測試 什么是mock(模擬) 模擬對象---mock object是以可控方式模擬真實對象行為的假對象&#xff0c;通過模擬輸入數據&#xff0c;驗證程序達到預期結果 為什么使用mock對象 因為…

6.7.圖的深度優先遍歷(英文縮寫DFS)

樹是特殊的圖&#xff0c;沒有回路的圖就是樹 BFS與DFS的區別在于&#xff0c;BFS使用了隊列&#xff0c;DFS使用了棧 一.深度優先遍歷&#xff1a; 1.樹的深度優先遍歷&#xff1a; 樹的深度優先遍歷分為先根遍歷和后根遍歷。 以樹的先根遍歷為例&#xff1a; 上述圖片里…

VOS3000內存滿了怎么刪除,錄音格式如何轉換呢

一、清理VOS3000內存&#xff08;刪除舊錄音文件&#xff09; 定位錄音存儲目錄 通常錄音文件存儲在以下路徑&#xff08;以實際配置為準&#xff09;&#xff1a; bash 復制 下載 /usr/local/vos/record # 默認錄音目錄 /var/log/vos/logs # 系統日志目錄&#xff08;…

【圖問答】DeepSeek-VL 論文閱讀筆記

《DeepSeek-VL: Towards Real-World Vision-Language Understanding》 1. 摘要/引言 基于圖片問答&#xff08;Visual Question Answering&#xff0c;VQA&#xff09;的任務 2. 模型結構 和 三段式訓練 1&#xff09;使用 SigLIP 和 SAM 作為混合的vision encoder&#xf…

MATLAB - 模型預測控制(MPC)使用 ADMM 求解器四分之一汽車懸架懸掛系統動力學控制

系列文章目錄 目錄 系列文章目錄 前言 一、四分車懸架模型 二、道路干擾剖面 三、設計模型預測控制器 四、設置優化求解器 五、輔助函數 前言 本例展示了如何為四分之一汽車懸架系統設計模型預測控制器 (MPC)&#xff0c;采用乘法交替方向法 (ADMM) 求解器來控制主動懸架…

基于多模態融合算法的航空武器毀傷評估技術方案

基于多模態融合算法的航空武器毀傷評估技術方案 1. 引言 航空武器毀傷評估(Damage Assessment, DA)是現代戰爭中的關鍵環節,直接影響后續作戰決策。傳統的人工評估方式效率低、主觀性強,且在高強度戰場環境下難以實時完成。因此,本研究提出一種基于多模態融合算法的自動…

LeetCode算法題(Go語言實現)_49

題目 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 k 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 一、代碼實現&#xff08;快速選擇…

【HCIA】簡易的兩個VLAN分別使用DHCP分配IP

前言 之前我們通過 靜態ip地址實現了Vlan間通信 &#xff0c;現在我們添加一個常用的DHCP功能。 文章目錄 前言1. 配置交換機2. 接口模式3. 全局模式后記修改記錄 1. 配置交換機 首先&#xff0c;使用DHCP&#xff0c;需要先啟動DHCP服務&#xff1a; [Huawei]dhcp enable I…

【技術派后端篇】技術派通用敏感詞替換:原理、實現與應用

在當今互聯網環境下&#xff0c;數據脫敏對于國內的互聯網企業而言已經成為一項標配。這不僅是為了滿足合規性要求&#xff0c;更是保障用戶信息安全和企業聲譽的重要舉措。本文將深入探討技術派中實現數據脫敏的關鍵技術——通用敏感詞替換&#xff0c;從算法原理到具體實現&a…

Android RK356X TVSettings USB調試開關

Android RK356X TVSettings USB調試開關 平臺概述操作-打開USB調試實現源碼補充說明 平臺 RK3568 Android 11 概述 RK3568 是瑞芯微&#xff08;Rockchip&#xff09;推出的一款高性能處理器&#xff0c;支持 USB OTG&#xff08;On-The-Go&#xff09;和 USB Host 功能。US…

Microsoft Edge for linux debian

下載地址 https://www.microsoft.com/en-us/edge/download?formMA13FJ 安裝 # 下載安裝包 wget https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_135.0.3179.85-1_amd64.deb?brandM102 # 安裝 sudo dpkg -i microsoft…

typedef MVS_API CLISTDEF0IDX(ViewScore, IIndex) ViewScoreArr;

查找 MVS_API 定義 我們沒有在 List.h 文件中找到 MVS_API 的定義。MVS_API 很可能在 MVS 庫的其他地方定義。一般來說&#xff0c;MVS_API 是控制 OpenMVS 庫導入導出的宏&#xff0c;通常會出現在 MVS 的頭文件中。為了回答這個問題&#xff0c;我可以提供 MVS 代碼中常見的…

5.4/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;The global burden of high BMI among adolescents between 1990 and 2021 DOI&#xff1a;10.1038/s43856-025-00838-2 中文標題&#xff1a;1990 年至 2021 年青少年高 BMI 的全球負擔 發表雜志&#xff1a;Commun Med 影響因子&#xff1a;1區&#xff…

【形式化驗證基礎】活躍屬性Liveness Property和安全性質(Safety Property)介紹

文章目錄 一、Liveness Property1、概念介紹2、形式化定義二、Safety Property1. 定義回顧2. 核心概念解析3. 為什么強調“有限前綴”4. 示例說明4.1 示例1:交通信號燈系統4.2 示例2:銀行賬戶管理系統5. 實際應用的意義三. 總結一、Liveness Property 1、概念介紹 在系統的…

Redis面試——常用命令

一、String &#xff08;1&#xff09;設置值相關命令 1.1.1 SET 功能&#xff1a;設置一個鍵值對&#xff0c;如果鍵已存在則覆蓋舊值語法&#xff1a; SET key value [EX seconds] [PX milliseconds] [NX|XX]EX seconds&#xff1a;設置鍵的過期時間為 seconds 秒 PX milli…

【Unity】使用Cinemachine+CharacterController實現第三人稱視角下的角色視角、移動和跳躍控制

1.初始配置 安裝Cinemachine插件給角色添加CharacterConroller創建Cinemachine-->Free Look Camera在Free Look Camera中調整參數&#xff0c;Y Axis勾選Inver&#xff0c;X Axis取消勾選InverFree Look Camera要看向角色 跟隨角色&#xff08;自行設置&#xff0c;我就不…

深入理解 DML 和 DQL:SQL 數據操作與查詢全解析

深入理解 DML 和 DQL&#xff1a;SQL 數據操作與查詢全解析 在數據庫管理中&#xff0c;SQL&#xff08;結構化查詢語言&#xff09;是操作和查詢數據的核心工具。其中&#xff0c;DML&#xff08;Data Manipulation Language&#xff0c;數據操作語言&#xff09; 和 DQL&…