Map 类型

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

创建方式 举例
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

属性

.entries

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

Entry.component1(),访问 Key

Entry.component2(),访问 Value

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

转换

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 中

判断

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

Kotlin - Map 字典相关推荐

  1. Bailian2804 词典【map+字典树】

    2804:词典 描述 你旅游到了一个国外的城市.那里的人们说的外国语言你不能理解.不过幸运的是,你有一本词典可以帮助你. 输入 首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行. ...

  2. DataFrame修改某列的取值(方法:map字典映射和嵌套if,else语句)

    文章目录 Map字典映射 if else 嵌套重新赋值 关于map()和匿名函数lambda 在将两种类型数据合并的时候,由于版本不同导致某一列中取值不同,因此在行转列进行统计的时候先要对齐.修改列值 ...

  3. kotlin map和Json转换,Json解析

    分享一下平时使用的简单转换 1.当后台需要json数组作为入参时: val body = toRequestBody("name" to name, "version&q ...

  4. Flutter 递归查询Map(字典)

    下面代码从模拟的公司组织架构数据中,把各级部们的员工都查找出来. void main() {doFind(); }void doFind(){String jsonString = getJsonSt ...

  5. Python笔记——基本数据结构:列表、元组及字典

    转载请注明出处:http://blog.csdn.net/wklken/archive/2011/04/10/6312888.aspx Python基本数据结构:列表,元组及字典 一.列表 一组有序项 ...

  6. (七)数据结构之“字典”

    数据结构之"字典" 字典是什么? LeetCode:349.两个数组的交集 LeetCode:20.有效的括号 LeetCode:1.两数之和 LeetCode:3.无重复字符的最 ...

  7. Java集合Map(四)

    ****************************Map********************************** Map Hashtable HashMap 1.键值对 2.没有迭代 ...

  8. python如何给某列数据打标签_Python map, apply, transform 打标签方法汇总(初阶到高阶)...

    前言 根据数据的某列进行打标签这个操作在数据分析领域极度常用,对于一些较为复杂的打标签方法,Python 与 SQL 都能很好的实现,这篇针对 Python,主要用到 map,apply 与 tran ...

  9. 联想搜索实现方案(java基于字典树算法的实现方式)

    1.背景 最近我的自动化测试平台(PostGirl)上有一个小需求: 用户在知识库的搜索框输入关键字,下方自动显示出以该关键字开头的词汇.实现效果类似百度的联想搜索(见下图). 2.方案一 开始我的实 ...

最新文章

  1. 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
  2. Linux对称NAT的UDP穿越
  3. CASE WHEN 高阶用法?
  4. 八皇后问题python_python八皇后问题的解决方法
  5. js 取得input绑定的datalist中的值_javascript基础修炼(9)——MVVM中双向数据绑定的基本原理...
  6. Java 线程池的实现原理,你真的理解吗?
  7. 2.中小型企业通用自动化运维架构 -- Ansible 安装
  8. 基于Web的SQL Server管理工具(SQL Server Web Tools )
  9. ld: i386 架构于输入文件foo.o 与 i386:x86-64 输出不兼容
  10. 用.iso文件从硬盘安装redhatlinux7.3(转)
  11. 计算机课程word教学,浅谈计算机Word表格的制作课程教学
  12. 苹果7全网通经常显示无服务器,iPhone 7处理器异响查出元凶?英特尔大喊冤枉
  13. 雷电模拟器激活面具magisk教程
  14. 未来10年什么行业发展比较好?
  15. web 前端判断身份证号码是否有效
  16. Java实现SHA1加密
  17. java开发之经验之谈
  18. 几天自学单片机的一些小小心得
  19. HTML网页设计期末课程大作业~动漫樱桃小丸子5页表格div+css学生网页设计作业源码...
  20. 那些40岁的程序员都去哪了

热门文章

  1. Linux 磁盘空间被吃了?这样排查不背锅
  2. 用Jdk自带工具keytool生成受信任的证书
  3. 速度控制与转矩控制的区别
  4. 探讨下一步的网游(三)一个玩弄朋友关系的游戏《朋友战争》
  5. 锤子手机跑分数据曝光
  6. 阿德勒:你的不幸都是自己选择的结果
  7. Netscape浏览器
  8. ps计算机图片素材,PS一分钟小技巧!快速提取图片中素材的绝招
  9. Arduino超声波测距模块控制蜂鸣器
  10. DOMString、Document、FormData、Blob、File、ArrayBuffer数据类型