Java
java.util
Arrays
HashSet
TreeSet
Deque
ArrayDeque
ArrayList
LinkedBlockingDeque
Map
HashMap
HashTable
TreeMap
LinkedHashMap
ComputeIfAbsent 在jdk8下的死锁场景
synchronized的锁升级过程
Volatile 关键字
redis 中的Lua脚本
AQS - 从干饭角度解析
ConcurrentHashMap
本文档使用 MrDoc 发布
-
+
首页
Map
## Map 维护键值对映射的对象 一个相当常用的<key,value>模式的对象,一个map不能有重复的key,一个key只能映射一个value。 如果将可变对象作为key,要额外注意重写他的equal和hashcode方法。另外一个特殊的约定是,map不能作为key,但是可以作为value。 | 用途 | 函数 | | --- | --- | | 是否存在key | boolean containsKey(Object key) | | 是否存在value | boolean containsValue(Object value); | | 获取value | V get(Object key); | | 获取value,取不到返回默认值 | V getOrDefault(Object key, V defaultValue)| | 放置value | V put(Object key); | | 放置value,若key已存在就直接返回 | V putIfAbsent(K key, V value)| | 放置value,若key不存在就直接返回 | V replace(K key, V value)| | 放置value,必须key和旧值相同才放置 | boolean replace(K key, V oldValue, V newValue) | | 移除value| V remove(Object key); | | 移除value,必须key和value都相同| boolean remove(Object key, Object value)| | 批量放置value | void putAll(Map<? extends K, ? extends V> m);| | 获取所有的key | Set<K> keySet(); | | 获取所有的value | Collection<V> values(); | | 获取所有的节点元素| Set<Map.Entry<K, V>> entrySet(); | | 遍历元素 | void forEach((key,value) -> {}); | | 遍历元素并替换原元素 | void replaceAll((key,value) -> {}); | | 如果指定的键尚未与值关联(或映射为 null),则尝试使用给定的映射函数计算其值并将其输入到此映射中,除非为 null。如果函数返回 null,则不记录映射。如果函数本身抛出(未经检查的)异常,则重新抛出异常,并且不记录任何映射| V computeIfAbsent(K key, (key,value)->{});| | 如果指定key的value存在且非空,则尝试计算给定key及其value的新映射。 若计算得到的新value为空,则移除元素,若异常,则抛出异常并保持不变 | V computeIfPresent(K key, (key,value)->{});| | 尝试计算指定键及其当前映射值的映射(如果没有当前映射,则为 null) | V compute(K key, (key,value)->{}); | | 如果指定的键尚未与值关联或与 null 关联,则将其与给定的非 null 值关联。否则,将关联的值替换为给定重映射函数的结果,如果结果为 null,则将其删除| V merge(K key, V value,(key,value)->{} | 常用实现有 ``` Map<String, String> hashMap = new HashMap<>(); Map<String, String> treeMap = new TreeMap<>(); Map<String, String> hashtable = new Hashtable<>(); Map<String, String> linkedHashMap = new LinkedHashMap<>(); Map<String, String> weakHashMap = new WeakHashMap<>(); Map<String, String> identityHashMap = new IdentityHashMap<>(); Map<String, String> concurrentHashMap = new ConcurrentHashMap<>(); Map<String, String> concurrentSkipListMap = new ConcurrentSkipListMap<>(); ```
寒烟濡雨
2022年3月29日 21:34
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码