Java容器分析
尘海拾梦
记录我的点点滴滴
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ArrayList/Vector容器分析
ArrayList/Vector 的底层分析 ArrayList ArrayList 实现于 List、RandomAccess 接口。可以插入空数据,也支持随机访问。 ArrayList相当于动态数据,其中最重要的两个属性分别是: elementData 数组,以及 size 大小。 在调用 add() 方法的时候: /** * Appends the specified el...原创 2019-03-09 20:15:02 · 139 阅读 · 0 评论 -
LinkedList底层分析
LinkedList 底层分析 如图所示 LinkedList 底层是基于双向链表实现的,也是实现了 List 接口,所以也拥有 List 的一些特点(JDK1.7/8 之后取消了循环,修改为双向链表)。 新增方法 public boolean add(E e) { linkLast(e); return true; } /** ...原创 2019-03-15 21:54:51 · 142 阅读 · 0 评论 -
HashMap底层分析
HashMap 底层分析 以下基于 JDK1.7 分析。 如图所示,HashMap 底层是基于数组和链表实现的。其中有两个重要的参数: 容量 负载因子 容量的默认大小是 16,负载因子是 0.75,当 HashMap 的 size > 16*0.75 时就会发生扩容(容量和负载因子都可以自由调整)。 put 方法 首先会将传入的 Key 做 hash 运算计算出 hashcode,...原创 2019-03-24 19:53:34 · 176 阅读 · 0 评论 -
ConcurrentHashMap底层分析
ConcurrentHashMap 实现原理 由于 HashMap 是一个线程不安全的容器,主要体现在容量大于总量*负载因子发生扩容时会出现环形链表从而导致死循环。 因此需要支持线程安全的并发容器 ConcurrentHashMap 。 JDK1.7 实现 数据结构 如图所示,是由 Segment 数组、HashEntry 数组组成,和 HashMap 一样,仍然是数组加链表组成。 Concur...原创 2019-03-24 21:07:55 · 150 阅读 · 0 评论
分享