news 2026/6/11 9:22:55

Kotlin - Map 映射

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kotlin - Map 映射

一、概念

Key具有唯一性,存入 Entry 时当 Key 重复时会覆盖之前的 Value。to 关键字本身是一个中缀表达式,返回一个 Pair。默认实现是 LinkedHashMap。

属性

.entries

获取 Map 中的所有 Entry,是一个Set

Entry.component1(),访问 Key

Entry.component2(),访问 Value

.keys获取 Map 中的所有 Key,是一个Set
.values获取 Map 中的所有 Value,是一个Set
.size获取 Map 中的 Entry 数量,是一个Int

二、创建

mapOf ()

val map1 = mapOf( 'A' to 3, 2 to "哈哈", false to true ) //随意类型

val map2 = mapOf<Int,String>( 1 to "你", 2 to "我", 3 to "他") //确定类型

mutableMapOf ()

hashMapOf ()

linkedMapOf ()

sortedMapOf ()

HashMap,允许null键null值,随着存储Entry顺序会发生变化

LinkedHashMap,使用链表维护顺序,遍历时得到的是先存入的

TreeMap,使用红黑二叉树进行排序

emptyMap ()

val em = emptyMap<Int, String>()

val me = mapOf<Int, String>()

em.size=0,em.isEmpty()=true,em.hashCode()=0

空map都是相等的,em==me 为 true

三、转换

Map.Entry.toPair () :Pair<K,V>把 Map 的 Entry 转换为 Pair,是 entry 的方法
Map.toMutableMap ()把只读的 Map 转化为可编辑的 MutableMap
Iterable<Pair<K,V>>.toMap (Map):Map

Iterable<Pair<K,V>>.toMap (Map):Map

把装有 Pair 的 Iterable 转换为 Map

四、增删

put (键,值)

put(K,V):V?

添加 Entry,如果 Key 存在就覆盖

plus (二元组/集合/数组/序列)

plusAssign (二元组/集合/数组/序列)

minus (二元组/集合/数组/序列)?????

minusAssign (二元组/集合/数组/序列)????

plus(Pair<K,V>):Map<K,V>

plus(Map<K,V>):Map<K,V>

plus(Iterable<Pair<K,V>>):Map<K,V>

plus(Array<Pair<K,V>>):Map<K,V>

plus(Sequence<Pair<K,V>>):Map<K,V>

加法运算,拼接,推荐使用操作符 +

plusAssign,拼接后赋值给原Map,推荐操作符 +=

减法同理?????

五、获取

get (键)

getValue (键)

getOrDefault (键,默认值)

getOrElse (键,默认值)

getOrPut (键,默认值)

get(K):V?

根据 Key 获取对应的 Value,没有则返回null,推荐使用操作符 [ ]

getValue(K):V

根据 Key 获取对应的 Value,没有则报错

getOrDefault(K,V):V

根据 Key 获取对应的 Value,没有则返回默认值,默认值类型要和原值的类型一样

getOrElse(K,() -> V):V

同上???

getOrPut(K,() -> V):V

根据 Key 获取对应的 Value,没有则添加进 Map 中

get(key) 返回 null 时,很难直接知道是"key 不存在",还是"key 存在但 value 就是 null"。Kotlin 2.4.0 实验性引入了两组函数来区分:

  • getOrElseIfNull(key, defaultValue) 和 .getOrPutIfNull(key, defaultValue):如果键缺失或值为 null,则返回默认值,类似于现有的 .getOrElse() 和 .getOrPut() 函数。
  • getOrElseIfMissing(key, defaultValue) 和 .getOrPutIfMissing(key, defaultValue):仅当 Map 不包含指定键时才返回默认值。

getOrElseIfNull(键,默认值)

getOrElseIfMissing(键,默认值)

getOrPutIfNull(键,默认值)

getOrPutIfMissing(键,默认值)

public inline fun <K, V> Map<K, V>.getOrElseIfNull(key: K, defaultValue: () -> V): V

public inline fun <K, V> Map<K, V>.getOrElseIfMissing(key: K, defaultValue: () -> V): V

public inline fun <K, V> MutableMap<K, V>.getOrPutIfNull(key: K, crossinline defaultValue: () -> V): V
public inline fun <K, V> MutableMap<K, V>.getOrPutIfMissing(key: K, crossinline defaultValue: () -> V): V

六、判断

containsKey (键)

containsValue (值)

containsKey(K):Boolean

Map中是否包含该 Key,包含true,不含false

containsValue (V):Boolean

Map中是否包含该 Value,包含true,不含false

七、运算

mapKeys (function)

mapValues (function)

mapKeys(Map.Entry<K,V> -> R):Map<R,V>)

对 Map 中的 Entry 进行运算后,将 Key 赋予新值

mapValues(Map.Entry<K,V> -> R):Map<K,R>)

对 Map 中的 Entry 进行运算后,将 Value 赋予新值

八、筛选

filterKeys (predicate)

filterValues (predicate)

filter (predicate)

filterKeys(K -> Boolean):Map<K,V>

返回一个Map,包含所有 Key 满足条件的 Entry

filterValues(V -> Boolean):Map<K,V>

返回一个Map,包含所有 Value 满足条件的 Entry

filter(Map.Entry<K,V> -> Boolean):Map<K,V>

返回一个Map,包含所有 Entry 满足条件的 Entry

九、MutableMap 中的方法

remove (键):值?

remove (K):V?

根据 Key 移除 Entry,返回被移除的 Value,没有对应的 Key 返回 null

clear ()

clear ():Unit

清空 MutableMap 中的 Entry

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 9:22:50

如何快速下载抖音无水印视频:TikTokDownload工具的完整使用教程

如何快速下载抖音无水印视频&#xff1a;TikTokDownload工具的完整使用教程 【免费下载链接】TikTokDownload 抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokDownload 想要保存抖音上的精彩视频&#xff…

作者头像 李华
网站建设 2026/6/11 9:22:38

基于Web的爬虫系统设计与实现

目 录 1 绪论 1 1.1 选题背景及意义 1 1.1.1选题背景 1 1.1.2目的及意义 1 1.2 国内外发展现状 2 1.2.1 爬虫技术概述 2 1.2.2 爬虫设计者所面临问题和反爬虫技术的现状 4 1.3 研究主要内容 7 1.4 章节安排 8 2 系统开发环境及技术介绍 9 2.1 Robot协议对本设计的影响 9 2.2 爬…

作者头像 李华
网站建设 2026/6/11 9:22:38

免费开源工具WeChatMsg:轻松实现微信聊天记录永久保存与智能分析

免费开源工具WeChatMsg&#xff1a;轻松实现微信聊天记录永久保存与智能分析 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…

作者头像 李华
网站建设 2026/6/11 9:22:21

qiime2分析16S rDNA V4区

2023年版本 以ZNP-ISO32.0作为例子 1. 进入docker qiime容器操作qiime docker start qiime docker attach qiime 2.创建manifest表格。在excel中编辑好&#xff0c;直接整个文件粘贴到服务器的manifest文件。 sample-id forward-absolute-filepath reverse-absolute-file…

作者头像 李华