map全家桶
文章平均质量分 89
java自带mpa分析
氵奄不死的鱼
日拱一卒,功不唐捐
展开
-
ConcurrentHashMap 1.7与1.8的区别
ConcurrentHashMap 与HashMap和Hashtable 最大的不同在于:put和 get 两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达Segment里面的Entry,然后在遍历entry链表JDK1.7版本:ReentrantLock+Segment+HashEntryJDK1.8版本:synchronized+CAS+HashEntry+红黑树1.JDK1.8降低锁的粒度,JDK1.7锁的粒度是基于Segment的,包含多个HashEntry原创 2022-12-04 17:59:27 · 5747 阅读 · 0 评论 -
ConcurrentHashMap 成员、方法分析
ConcurrentHashMap构造函数的负载因子 与hashMap的负载因子不同。ConcurrentHashMap构造中的负载因子的作用是,与initialCapacity一起确定ConcurrentHashMap容量的大小,后续扩容使用的都是默认0.75的负载因子进行扩容原创 2022-12-03 17:01:29 · 521 阅读 · 0 评论 -
HashMap JDK1.7与1.8的区别
首先HashMap在1.7中是以数组+链表的形式存在的, 而HashMap在1.8中则是以数组+链表+红黑树构成的, 当一个节点的链表长度超过8并且数组长度超过64时会将链表转换为红黑树,初始容量大小介绍说到数组就不得不提HashMap里面的成员变量DEFAULT_INITIAL_CAPACITY也就是容量大小,如果不指定的话默认是16,如果通过有参构造指定容器大小的话也必须是2的平方数,当然了如果传入的参数并不是2的平方数的话(最好不要这样,实在不知道写多少容量我们直接写个默认的大小16),HashM原创 2022-12-03 16:55:43 · 2795 阅读 · 0 评论 -
HashTable,LinkedHashMap,TreeMap理解
HashTablehashtable就是hash槽套了一个数组,利用数组解决hash冲突,针对put,remove,get等方法加上了synchronized简单粗暴的解决线程安全LinkedHashMap继承自hashMappublic class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>AccessOrder为false直接使用父类hashMap的put方法原创 2021-11-23 20:30:58 · 542 阅读 · 0 评论 -
搞懂ConcurrentHashMap
构造函数 /** * Creates a new, empty map with an initial table size based on * the given number of elements ({@code initialCapacity}), table * density ({@code loadFactor}), and number of concurrently * updating threads (原创 2021-11-23 20:29:04 · 3194 阅读 · 0 评论 -
终于搞懂了红黑树
R-B Tree简介R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。注原创 2021-11-17 22:05:04 · 1232 阅读 · 0 评论 -
完全搞懂HashMap
构造函数/** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * (16) and the default load factor (0.75). */ public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted原创 2021-11-21 14:40:16 · 813 阅读 · 0 评论