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.mzph.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&…