- 2024-07-31HashMap 详细解析
HashMapHashMap是Java的一种键值对容器,该容器的核心方法是putVal方法,为了提高查询稳定性,Java团队向该类引入了红黑树结构,为了减少碰撞概率引入了扰动函数,在对象的哈希值相同时又调用了equals方法进行二次检测泊松分布*树形节点的大小是普通节点的两倍*桶的数量和
- 2024-05-16hashMap寻址算法
hashMap寻址算法计算对象的hashCode()。再进行调用hash()方法进行二次哈希,hashcode值右移16位再异或运算,让哈希分布更为均匀。最后(capacity-1)&hash得到索引。为何HashMap的数组长度一定是2的次幂计算索引时效率更高:如果是2的n次幂可以使用位与运算代替取模。扩容时
- 2022-12-22JDK源码分析实战系列-PriorityBlockingQueue
前言可以通过分析PriorityBlockingQueue来了解JUC中的线程安全的队列实现的一些套路,这些套路会在JUC中其他数据结构实现上反复出现,从而可以更合理的了解那些实现机制背后
- 2022-10-17HashMap的尾部遍历问题 (Tail Traversing)
JDK1.7的HashMap在实现resize()时,新table[]的列表采用LIFO方式,即队头插入。这样做的目的是:避免尾部遍历。避免尾部遍历是为了避免在新列表插入数据时,遍历到队尾的位置。因
- 2022-10-13HashMap index 计算以及 map 扩容旧值如何处理
首先index如何计算 我们都知道添加一个Entry进Map其实就是添加一个不可重复的key进入散链表中, 在计算的时候首先会获取到index的hash值而ha
- 2022-10-09JDK 1.8 HashMap 扩容源码详解
作为开发人员,千万不能停留在实现功能上,一定要提升到性能方面上。这需要我们不断的实践,学习源码, 根据底层实现原理,来做出最好的操作。 就HashMap而言,一定是我们常用的