Kotlin 基础——Map集合详解
Kotlin基础——Map集合详解
- 一、声明和创建Map集合
- 二、使用Map的方法
- 三、遍历Map四种方式
- 四、可变的Map
Kotlin的Map集合用于保存key-value对,其也被分为可变的和不可变的。
一、声明和创建Map集合
Kotlin提供了如下函数来创建Map集合:
- mapOf():该函数返回不可变的Map集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。
- mutableMapOf():该函数返回可变的MutableMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。
- hashMapOf():该函数返回可变的HashMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。
- linkedMapOf():该函数返回可变的LinkedHashMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。
- sortedMapOf():该函数返回可变的TreeMap集合。该函数可接受0个或多个key-value对,这些key-value对将作为Map的元素。
//创建不可变集合,返回值是Mapvar map = mapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)println(map)//按添加顺序排列println("mapOf的返回对象的实际类型:${map.javaClass}")//创建可变集合var mutableMap = mutableMapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)println(mutableMap)//按添加顺序排列println("mutableMapOf的返回对象的实际类型:${mutableMap.javaClass}")//创建HashMap集合var hashMap = hashMapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)println(hashMap)//不保证排列顺序println("hashMapOf的返回对象的实际类型:${hashMap.javaClass}")//创建LinkedHashMapvar linkedHashMap = linkedMapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)println(linkedHashMap)//按添加顺序排列println("linkedMapOf的返回对象的实际类型:${linkedHashMap.javaClass}")//创建TreeMap集合var treeMap = sortedMapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)println(treeMap)//按key由小到大排列println("sortedMapOf的返回对象的实际类型:${treeMap.javaClass}")
输出结果:
{Java=86, Kotlin=92, Go=78}
mapOf的返回对象的实际类型:class java.util.LinkedHashMap
{Java=86, Kotlin=92, Go=78}
mutableMapOf的返回对象的实际类型:class java.util.LinkedHashMap
{Go=78, Java=86, Kotlin=92}
hashMapOf的返回对象的实际类型:class java.util.HashMap
{Java=86, Kotlin=92, Go=78}
linkedMapOf的返回对象的实际类型:class java.util.LinkedHashMap
{Go=78, Java=86, Kotlin=92}
sortedMapOf的返回对象的实际类型:class java.util.TreeMap
二、使用Map的方法
//创建不可变集合,返回值是Mapvar map = mapOf("Java" to 86, "Kotlin" to 92, "Go" to 78)//判断是否所有key-value对的key的长度都大于4,value都大于80println(map.all { it.key.length > 4 && it.value > 80 })//判断是否任一key-value对的key的长豆都大于4、value都大于80println(map.any { it.key.length > 4 && it.value > 80 })println("Java" in map)println("Go" !in map)//对Map集合元素进行过滤:要求key包含lival filteredMap = map.filter { "li" in it.key }println(filteredMap)//将每个key-value对映射成新值,返回所有新值组成的Map集合val mappedList = map.map { "${it.key}有${it.value}节课" }println(mappedList)//根据key获取最大值println(map.maxBy { it.key })//根据value获取最小值println(map.minBy { it.value })var bMap= mapOf("Lua" to 67,"Erlang" to 73,"Kotlin" to 92)//求并集println(map+bMap)//集合相减println(map-bMap)
输出结果:
false
true
true
false
{Kotlin=92}
[Java有86节课, Kotlin有92节课, Go有78节课]
Kotlin=92
Go=78
{Java=86, Kotlin=92, Go=78, Lua=67, Erlang=73}
{Java=86, Kotlin=92, Go=78}
三、遍历Map四种方式
Map集合由多个key-value对组成,因此遍历Map集合时既可以通过对key-value对进行遍历,也可先遍历key,再通过key来获取对应的value进行遍历。
- 下面是对Map集合遍历的几种方式:
//创建不可变集合,返回值是Mapvar map = mapOf("Java" to 86, "Kotlin" to 92, "Go" to 76)//遍历Map的key-value对,entris元素返回key-value对组成的Setfor (en in map.entries) {println("${en.key}->${en.value}")}//先遍历Map的key,再通过key获取valuefor (key in map.keys) {println("${key}->${map[key]}")}//直接用for-in循环遍历Mapfor ((key, value) in map) {println("${key}->${value}")}//用Lambda表达式遍历Mapmap.forEach({ println("${it.key}->${it.value}") })
输出结果:
Java->86
Kotlin->92
Go->76Java->86
Kotlin->92
Go->76Java->86
Kotlin->92
Go->76Java->86
Kotlin->92
Go->76
四、可变的Map
可变的Map为操作key-value对提供了如下方法:
- clear():清空所有的key-value对。
- put(key:K,value:V):放入key-value对。如果原来已有key,value将被覆盖。
- putAll(form:Map<out K,V>):批量放入多个key-value对。
- remove(key:K):删除key-value对。
var mutableMap = mutableMapOf("OC" to 96, "PHP" to 3400, "Perl" to 4300, "Ruby" to 5600, "Go" to 5600)//以方括号语法放入key-value对mutableMap["Swift"] = 9000println(mutableMap)//以put方法放入key-value对mutableMap.put("OC", 8600)println(mutableMap)//删除key为"PHP"的key-value对mutableMap.remove("PHP")println(mutableMap)println(mutableMap.size)//删除所有元素mutableMap.clear()println(mutableMap)println(mutableMap.size)
输出结果:
{OC=96, PHP=3400, Perl=4300, Ruby=5600, Go=5600, Swift=9000}
{OC=8600, PHP=3400, Perl=4300, Ruby=5600, Go=5600, Swift=9000}
{OC=8600, Perl=4300, Ruby=5600, Go=5600, Swift=9000}
5
{}
0
更多精彩内容请扫码关注:
Kotlin 基础——Map集合详解相关推荐
- Kotlin 基础——Set集合详解
Kotlin基础--Set集合详解 一.声明和创建 二.使用Set的方法 三.遍历Set 四.可变的Set 4.1.添加元素 4.2.删除元素 Kotlin的集合类由两个接口派生:Collection ...
- 集合 (二) ----- Map集合详解
相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 Map集合详解 一.Map集合基 ...
- Java—Map集合详解(HashMap/Hashtable/LinkedHashMap/Properties/TreeMap/WeakHashMap/IdentityHashMap/EnumMap)
关注微信公众号:CodingTechWork,一起学习进步. Map Map集合介绍 Map(也称为字典.关联数组)是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何 ...
- java 中map_Java Map集合详解
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象.其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素 ...
- java map集合详解_JAVA干货:Map 集合详解
java.util.Map集合 Map集合的特点: 1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) 2.Map集合中的元素,key和value的数据类型可以相同,也可以 ...
- java的Map集合 详解Map集合
一.Map集合的特点: Map集合的特点: 1.Map是一个双列集合,一个元素包含两个值(一个key,一个value) 2.Map集合中的元素,key和value的数据类型可以相同,也可以不同 3.M ...
- Java~Map集合详解
文章目录 Map介绍 核心Map 内部哈希:哈希映射技术 常用方法 遍历Map Map介绍 java.util中的集合类包含Java中某些最常用的类,其中最常用的集合类就是List和Map. 并且在集 ...
- 集合 (一) ----- 集合的基本概念与Collection集合详解
相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 集合的基本概念 一.集合的分类 ...
- Java集合详解之Map
一.首先看看集合框架体系图 从图中可以看到,Map接口扩展了Iterator接口,关于Iterator接口详解请移步:Iterator接口详解 二.Map是什么? Map<k,v>使用键值 ...
最新文章
- 如何在科研论文中画出漂亮的插图?(附代码)
- 本科计算机科学与技术专业物理,中国工程物理研究院职工工学院计算机科学与技术(本科)专业介绍...
- 关于删除数据仓库的数据
- 1_boostrap概述
- 安卓代码迁移:ActionBarActivity: cannot be resolved to a type
- jzoj4274-终章-剑之魂【位运算,贪心】
- pascal行人voc_在Pascal VOC 数据集上训练YOLOv3模型
- 分享 :用五个趣味案例教你数据分析的基本思想
- Linux 命令(19)—— tar 命令
- Cowrie 部署 SSH 蜜罐
- 如何制作圆角布局..?
- SQL NOTE--VIEW
- 媒体查询以及flexbox,响应式图片
- 天勤数据结构代码——递归
- 版本控制工具SVN的使用
- 解决卸载wifi共享软件后无法连网的问题
- mysql chunk_【MySQL参数】-innodb_buffer_pool_chunk_size
- 工业机器人(四)——传感元件制作
- 看完代码回首看论文:YOLOv3重读
- Manjaro Linux KDE 安装后的配置