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

java 字典

java 字典

数据结构总览

在这里插入图片描述

Map

Map 描述的是一种映射关系,一个 key 对应一个 value,可以添加,删除,修改和获取 key/value,util 提供了多种 Map

  • HashMap: hash 表实现的 map,插入删除查找性能都是 O(1),key 没有顺序
  • TreeMap: 红黑树实现的 map,插入删除查找都是 O(lgn),key 按从大到小顺序排列
  • Hashtable: hash 实现,线程安全,key 和 value 都不能为空,key 没有顺序
  • LinkedHashMap: hash + 链表实现,按插入顺序排序
  • IdentityHashMap: 判断 key 相等的条件是,两个引用指向同一个对象,即 key == e.key
  • WeakHashMap: 弱引用 map,不会获取数据的强引用,当数据被 GC 清理时,数据将被删除

Map 的主要接口如下:

  • isEmpty: 判断是否没有元素
  • size: 获取元素个数
  • get: 获取指定 key 的 value
  • getOrDefault: 获取指定 key 的 value,如果没有 key,返回默认值
  • containsKey: 判断字典是否包含 key
  • containsValue: 判断字典是否包含 value
  • keySet: key 的集合
  • values: value 的集合
  • entrySet: 包含 key/value 的集合,主要用于遍历
  • put: 添加一个 key/value
  • putIfAbsent: key 不存在才添加,如果 key 存在,返回 value,如果 key 不存在,返回 null
  • putAll: 合并 map,不存在的 key 添加,已存在的 key 覆盖
  • remove(key): 删除,返回老 value
  • remove(key, val): 存在 map[key] = val 才删除,返回是否有元素删除
  • replace(key, newVal): 替换,返回老 value
  • replace(key, val, newVal: 存在 map[key] = val 才替换,返回是否有元素替换
  • repalceAll: 对所有的 key/value 执行 BiFounction 替换原来的 value
  • compute: 所选的 key/oldValue 执行 BiFounction 替换原来的 value;如果 key 不存在,则 oldValue 为 null
  • computeIfPresent: key 存在才执行 BiFounction 替换原来的 value
  • computeIfAbsent: key 不存在才对 key 执行 Founction 作为 value 插入
  • merge: 用 oldValue 和 newValue 执行 BiFounction 替换原来的 value;如果 key 不存在,则 oldValue 为 null

Hashtable

Hashtable 的 key/value 都不允许为空

IdentityHashMap

IdentityHashMap 判断相等的条件是 key 和 entry.key 是否为同一个引用对象

WeakHashMap

WeakHashMap 的 key 为弱引用,当原对象被 GC 回收时,这个 key 也会被自动删除

SortedMap

SortedMap 继承自 Map,key 是有序的,提供了顺序相关的几个接口

  • firstKey: 最小的 key
  • lastKey: 最大的 key
  • headMap: 小于给定元素的 key 构成的 map
  • tailMap: 大于等于给定元素的 key 构成的 map
  • subMap: from 和 to 之间的元素构成的 map,包含 from 不包含 to

NavigableMap 继承自 SortedMap,提供了如下几个接口

  • lowerKey: 小于给定值的最大的 key
  • higherKey: 大于给定值的最小的 key
  • floorKey: 小于等于给定值的最大的 key
  • ceilingKey: 大于等于给定值的最小的 key
  • lowerEntry: 小于给定值的最大的 entry
  • higherEntry: 大于给定值的最小的 entry
  • floorEntry: 小于等于给定值的最大的 entry
  • ceilingEntry: 大于等于给定值的最小的 entry
  • pollFirstEntry: 删除并获取最小的 entry
  • pollLastEntry: 删除并获取最大的 entry
  • headSet: 头部 Map,提供额外参数是否包含给定值
  • tailSet: 尾部 Map,提供额外参数是否包含给定值
  • subSet: 子 Map,提供额外参数是否包含特定值

作者:hatlonely
链接:https://www.jianshu.com/p/905369de999a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.lryc.cn/news/27805.html

相关文章:

  • 【企业服务器LNMP环境搭建】mysql安装
  • vue自定义指令以及angular自定义指令(以禁止输入空格为例)
  • 异常 复习
  • K8s:开源安全平台 kubescape 实现 Pod 的安全合规检查/镜像漏洞扫描
  • C#中,FTP同步或异步读取大量文件
  • STM32单片机的FLASH和RAM
  • Java 二叉树的遍历
  • 实习日记-C#
  • Tech Lead如何引导团队成员解决问题?
  • 07--组件
  • 怎么做好一个完整的项目复盘
  • 浅谈一下mysql8.0与5.7的字符集
  • paddle推理部署(cpu)
  • 想开发IM集群?先搞懂什么是RPC!
  • 案例13-前端对localStorage的使用分析
  • CNNIC第51次中国互联网络发展状况统计报告用户规模变化发布、解读与白杨SEO看法
  • 【数据结构】单链表的实现
  • 从0到1做产品!产品设计的6个步骤
  • ESP32遥控器软硬件设计
  • vue-template-admin的keep-alive缓存与移除缓存
  • 【人工智能 AI】机器学习快速入门教程(Google)
  • 适配器模式
  • 00后跨专业学软件测试,斩获8.5K高薪逆袭职场
  • 数据结构和算法学习
  • 剑指 Offer II 012. 左右两边子数组的和相等
  • Java货物摆放
  • 计算机求解满足三角形各边数字之和相等的数字填充
  • python魔术方法
  • 从0开始学python -48
  • 当面试官问我前端可以做的性能优化有哪些