![](https://img-blog.csdnimg.cn/3055e817dff4453ea0f02062e8cc10ee.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jdk 集合类源码分析
文章平均质量分 82
jdk 集合类相关分享
systemup_v1
面向框架编程
展开
-
LinkedHashMap为何能够实现LRU缓存
Jdk中HashMap作为高频使用的数据结构能够满足大多数业务场景,但要HashMap实现LRU缓存功能那就需要额外增加很多代码才能实现。如果想要按照插入顺序遍历HashMap同样需要额外的代码编写才能实现。本文重点讨论LinkedHashMap原理及其应用场景。由于LinkedHashMap继承自HashMap,很多方法直接调用HashMap类中,因此阅读本前最好了解HashMap内部基本原理可以参考之前HashMap源码分析相关文章。HashMap构造方法与内存空间分配HashMap原创 2022-04-24 10:43:13 · 596 阅读 · 0 评论 -
谈谈 HashMap(int initialCapacity)与内存分配机制
在JDK的HashMap中存在无参构造函数和有参构造函数,有参构造函数中又存在带有指定容量和加载因子的构造方法和只带有指定容量的构造方法,本文主要分析下 HashMap(int initialCapacity) 构造方法public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR);}public HashMap(int initialCapacity, float loadFactor) {原创 2020-06-29 14:04:18 · 3081 阅读 · 0 评论 -
ArrayList内存空间分配&回收机制
对于Java开发者来说ArrayList类的使用是非常高频的,ArrayList是基于数组实现的线性表并在数组的基础上提供了丰富的操作方法。比较常见的有ArrayList 自动动态扩容 ArrayList 支持数据向前,向后移动 ArrayList 支持按照对象查找 ArrayList 保存有效元素个数其实ArrayList还有一个回收空间的方法如果ArrayList实际元素个数小于其底层分配数组长度则可以进行空间回收,当然这种空间回收是指将多余的空间回收而不是把有效数据占用空...原创 2022-04-18 13:26:54 · 2261 阅读 · 0 评论 -
HashMap 扩容中巧用位运算
其实HashMap已经是一个老生常谈的问题了在面试中也是深受面试官喜爱,在网上如果搜索HashMap原理,源码分析得文章也是非常多本文基于jdk1.8分析下扩容原理jdk1.7与jdk1.8最大的差别是解决hash冲突的数据结构由原来的链表变为链表+红黑树resize方法分析首先翻一下该方法注释,翻译出来感觉还是很拗口初始化或者将table长度变为原来的2倍 如果为空,则根据字段阈值中保留的初始容量目标进行分配。否则的话由于通过double原来table方式进行扩展,如果hash桶在原原创 2020-06-30 13:32:02 · 896 阅读 · 0 评论