当前位置: 首页 > news >正文

4.Kotlin 集合 Map 所有方法

Kotlin Map 所有方法(按功能分类)

一、基础属性与判断
方法/属性说明示例
size: Int键值对数量val map = mapOf(1 to "a", 2 to "b")
map.size // 2
isEmpty(): Boolean判断是否为空映射mapOf<Int, String>().isEmpty() // true
isNotEmpty(): Boolean判断是否为非空映射mapOf(1 to "a").isNotEmpty() // true
二、元素访问与检查
方法说明示例
containsKey(key: K): Boolean判断是否包含指定键val map = mapOf(1 to "a", 2 to "b")
map.containsKey(1) // true
containsValue(value: V): Boolean判断是否包含指定值val map = mapOf(1 to "a", 2 to "b")
map.containsValue("a") // true
get(key: K): V?获取指定键对应的值(无则返回 null)val map = mapOf(1 to "a", 2 to "b")
map.get(1) // "a"
map[1] // 简写形式
getOrDefault(key: K, defaultValue: V): V获取值,无则返回默认值val map = mapOf(1 to "a")
map.getOrDefault(2, "default") // "default"
getValue(key: K): V获取值(无则抛异常)val map = mapOf(1 to "a")
map.getValue(1) // "a"
三、键值集合获取
方法说明示例
keys: Set<K>获取所有键的集合val map = mapOf(1 to "a", 2 to "b")
map.keys // [1, 2]
values: Collection<V>获取所有值的集合val map = mapOf(1 to "a", 2 to "b")
map.values // ["a", "b"]
entries: Set<Map.Entry<K, V>>获取所有键值对的集合val map = mapOf(1 to "a", 2 to "b")
map.entries // [1=a, 2=b]
四、迭代与遍历
方法说明示例
iterator(): Iterator<Map.Entry<K, V>>返回键值对迭代器val map = mapOf(1 to "a", 2 to "b")
val it = map.iterator()
while (it.hasNext()) println(it.next())
forEach(action: (Map.Entry<K, V>) -> Unit)遍历所有键值对val map = mapOf(1 to "a", 2 to "b")
map.forEach { entry ->
println("${entry.key}: ${entry.value}")
}
forEach(action: (K, V) -> Unit)遍历所有键值对(解构参数)val map = mapOf(1 to "a", 2 to "b")
map.forEach { k, v ->
println("$k: $v")
}
五、转换操作
方法说明示例
toMap(): Map<K, V>转换为不可变映射(本身为Map时返回自身)val map = mapOf(1 to "a")
map.toMap() // {1=a}
toMutableMap(): MutableMap<K, V>转换为可变映射val map = mapOf(1 to "a")
val mutableMap = map.toMutableMap()
mutableMap[2] = "b" // {1=a, 2=b}
toList(): List<Pair<K, V>>转换为键值对列表val map = mapOf(1 to "a", 2 to "b")
map.toList() // [(1, a), (2, b)]
plus(pair: Pair<K, V>): Map<K, V>添加键值对并返回新映射(键重复会覆盖)val map = mapOf(1 to "a")
map.plus(2 to "b") // {1=a, 2=b}
map.plus(1 to "c") // {1=c}
plus(pairs: Iterable<Pair<K, V>>): Map<K, V>添加多个键值对并返回新映射val map = mapOf(1 to "a")
map.plus(listOf(2 to "b", 3 to "c")) // {1=a, 2=b, 3=c}
minus(key: K): Map<K, V>移除指定键并返回新映射val map = mapOf(1 to "a", 2 to "b")
map.minus(1) // {2=b}
minus(keys: Iterable<K>): Map<K, V>移除多个键并返回新映射val map = mapOf(1 to "a", 2 to "b", 3 to "c")
map.minus(listOf(1, 3)) // {2=b}
map(transform: (Map.Entry<K, V>) -> R): List<R>转换为列表val map = mapOf(1 to "a", 2 to "b")
map.map { (k, v) -> "$k:$v" } // ["1:a", "2:b"]
mapKeys(transform: (Map.Entry<K, V>) -> R): Map<R, V>转换键并返回新映射val map = mapOf(1 to "a", 2 to "b")
map.mapKeys { (k, _) -> "key$k" } // {"key1"=a, "key2"=b}
mapValues(transform: (Map.Entry<K, V>) -> R): Map<K, R>转换值并返回新映射val map = mapOf(1 to "a", 2 to "b")
map.mapValues { (_, v) -> v.uppercase() } // {1=A, 2=B}
六、过滤操作
方法说明示例
filter(predicate: (Map.Entry<K, V>) -> Boolean): Map<K, V>过滤键值对并返回新映射val map = mapOf(1 to "a", 2 to "b", 3 to "c")
map.filter { (k, _) -> k > 1 } // {2=b, 3=c}
filterKeys(predicate: (K) -> Boolean): Map<K, V>按键过滤并返回新映射val map = mapOf(1 to "a", 2 to "b", 3 to "c")
map.filterKeys { it % 2 == 0 } // {2=b}
filterValues(predicate: (V) -> Boolean): Map<K, V>按值过滤并返回新映射val map = mapOf(1 to "a", 2 to "b", 3 to "c")
map.filterValues { it > "a" } // {2=b, 3=c}
filterIsInstance<K, V>(): Map<K, V>过滤指定类型的键值对val map = mapOf(1 to "a", "b" to 2)
map.filterIsInstance<Int, String>() // {1=a}
七、查找操作
方法说明示例
entries.first(): Map.Entry<K, V>获取首个键值对(空映射抛异常)mapOf(1 to "a", 2 to "b").entries.first() // 1=a
entries.firstOrNull(): Map.Entry<K, V>?获取首个键值对(空映射返回 null)mapOf<Int, String>().entries.firstOrNull() // null
entries.last(): Map.Entry<K, V>获取最后一个键值对(空映射抛异常)mapOf(1 to "a", 2 to "b").entries.last() // 2=b
entries.lastOrNull(): Map.Entry<K, V>?获取最后一个键值对(空映射返回 null)mapOf<Int, String>().entries.lastOrNull() // null
firstKey(): K获取首个键(空映射抛异常)mapOf(1 to "a", 2 to "b").firstKey() // 1
lastKey(): K获取最后一个键(空映射抛异常)mapOf(1 to "a", 2 to "b").lastKey() // 2
find(predicate: (Map.Entry<K, V>) -> Boolean): Map.Entry<K, V>?查找首个满足条件的键值对val map = mapOf(1 to "a", 2 to "b")
map.find { (k, _) -> k > 1 } // 2=b
八、统计与判断
方法说明示例
count(): Int键值对总数(等同于 size)mapOf(1 to "a", 2 to "b").count() // 2
count(predicate: (Map.Entry<K, V>) -> Boolean): Int满足条件的键值对数量val map = mapOf(1 to "a", 2 to "b", 3 to "c")
map.count { (k, _) -> k > 1 } // 2
all(predicate: (Map.Entry<K, V>) -> Boolean): Boolean是否所有键值对满足条件val map = mapOf(2 to "a", 4 to "b")
map.all { (k, _) -> k % 2 == 0 } // true
any(predicate: (Map.Entry<K, V>) -> Boolean): Boolean是否存在满足条件的键值对val map = mapOf(1 to "a", 3 to "b", 4 to "c")
map.any { (k, _) -> k % 2 == 0 } // true
none(predicate: (Map.Entry<K, V>) -> Boolean): Boolean是否无键值对满足条件val map = mapOf(1 to "a", 3 to "b")
map.none { (k, _) -> k % 2 == 0 } // true
九、其他常用方法
方法说明示例
toString(): String转换为字符串表示mapOf(1 to "a", 2 to "b").toString() // "{1=a, 2=b}"
equals(other: Any?): Boolean判断内容是否相等mapOf(1 to "a").equals(mapOf(1 to "a")) // true
hashCode(): Int计算哈希值mapOf(1 to "a").hashCode() // 哈希值(因环境而异)
asSequence(): Sequence<Map.Entry<K, V>>转换为序列(延迟计算)val map = mapOf(1 to "a", 2 to "b")
map.asSequence().filter { (k, _) -> k > 1 }.toMap() // {2=b}
onEach(action: (Map.Entry<K, V>) -> Unit): Map<K, V>遍历键值对并返回自身val map = mapOf(1 to "a", 2 to "b")
map.onEach { println(it) } // {1=a, 2=b}
associate(transform: (Map.Entry<K, V>) -> Pair<R, S>): Map<R, S>转换为新映射val map = mapOf(1 to "a", 2 to "b")
map.associate { (k, v) -> (k * 2) to v.uppercase() } // {2=A, 4=B}
associateBy(keySelector: (Map.Entry<K, V>) -> R): Map<R, Map.Entry<K, V>>按键选择器创建新映射val map = mapOf(1 to "a", 2 to "b")
map.associateBy { (k, _) -> "key$k" } // {"key1"=1=a, "key2"=2=b}
http://www.dtcms.com/a/338830.html

相关文章:

  • CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
  • 库卡机器人tag焊接保护气体流量控制系统
  • (第五篇)spring cloud之Ribbon负载均衡
  • 主流 3D 模型格式(FBX/OBJ/DAE/GLTF)材质支持与转换操作指南
  • 云存储的高效安全助手:阿里云国际站 OSS
  • ICCV 2025 | 首个3D动作游戏专用VLA模型,打黑神话只狼超越人类玩家
  • iOS 性能监控实践,如何构建从开发到运维的持续优化体系
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 如何用给各种IDE配置R语言环境
  • Halcon联合C# 添加工具类让winform自动根据窗体大小自适应缩放所有控件
  • 知行社黄剑杰:金融跨界,重塑震区救援新章
  • 《基于大数据的全球用水量数据可视化分析系统》用Python+Django开发,为什么导师却推荐用Java+Spring Boot?真相揭秘……
  • sqli-labs通关笔记-第55关 GET数值型注入(括号闭合 限制14次探测机会)
  • 今日行情明日机会——20250819
  • 20.2 QLoRA微调全局参数实战:高点击率配置模板+显存节省50%技巧
  • Linux下Nginx安装及负载均衡配置
  • Python 3.14深度解析:革命性特性与性能优化实践
  • Go高效复用对象:sync.Pool详解
  • Windows内核开发笔记
  • 免费导航规划API接口详解:调用指南与实战示例
  • 一个基于前端技术的小狗寿命阶段计算网站,帮助用户了解狗狗在不同年龄阶段的特点和需求。
  • 数据链路层-网络层-传输层
  • js 值转换boolean方式
  • AutoSAR实战:DCM配置之Response On Event (0x86)事件响应配置指导
  • 【深度学习计算性能】06:多GPU的简洁实现
  • 守护通行安全,“AI+虚拟仿真”领航交通设施人才培育
  • ROS点云可视化工具——Foxglove工具使用
  • Spring Cloud 微服务架构:Eureka 与 ZooKeeper 服务发现原理与实战指南 NO.1
  • 前端如何处理首屏优化问题
  • 微信小程序实现蓝牙开启自动播放BGM