Java 集合框架
文章平均质量分 96
深入分析Java集合框架源码,知其然,知其所以然
zthgreat
这个人很懒,什么都没有留下
展开
-
Java 并发 --- CopyOnWriteArrayList 源码分析
CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy,读写分离的思想,通俗地讲,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器复制出一个新的容器,然后在新的容器里添加元素,添加玩元素之后再讲原来容器的引用指向新的容器。原创 2018-01-04 12:49:30 · 348 阅读 · 0 评论 -
Java 并发 --- ConcurrentSkipListMap源码分析
在学习ConcurrentSkipListMap 之前 我们需要先来学习一种随机化的数据结构–跳跃表(skip list) 对于数组的查找可以有很多方法,如果是有序的,那么可以采用二分查找,二分查找要求元素可以随机访问,所以决定了需要把元素存储在连续内存。这样查找确实很快,但是插入和删除元素的时候,为了保证元素的有序性,就需要大量的移动元素了。 对于链表而言,不能进行随机访问,也就是说不能单纯的原创 2018-01-16 19:14:39 · 593 阅读 · 0 评论 -
Java集合之ConcurrentHashMap源码分析
注:本文源码是JDK8的版本ConcurrentHashMap 介绍(jdk 1.8)ConcurrentHashMap是HashMap的升级版,HashMap是非线程安全的集合,ConcurrentHashMap则可以支持并发操作, HashMap是我们平时开发过程中用的比较多的集合,ConcurrentHashMap就算用得少,但是听过的肯定不少,一起来研究研究吧原创 2017-12-16 18:37:19 · 2013 阅读 · 1 评论 -
Java集合之HashSet,LinkedHashSet源码分析
HashSet,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成,因此如果明白了HashMap那么HashSet也就自然明白原创 2017-11-21 20:49:51 · 411 阅读 · 0 评论 -
Java集合之TreeMap源码分析
在jdk 1.8 中 HashMap是数组+链表+红黑树实现的,当hash表某个位置上的元素个数超过某个阀值过后就采用红黑树结构,否则采用链表结构,在HashMap中元素 相对插入顺序是无序的,也就是说其遍历顺序不可预测。LinkedHashMap是基于HashMap实现的,使用了双向链表,保证按照插入顺序或者访问顺序进行迭代,TreeMap 支持按键值进行升序访问,或者由传入的比较器(Comparator)来控制。原创 2017-11-19 20:01:08 · 1150 阅读 · 0 评论 -
Java集合之LinkedHashMap源码分析
前面我们分析了HashMap,HashMap在jdk 1.8中是红黑树和链表实现的,具有很好的查询性能,但是HashMap存储元素是无序,这里的无序指的是插入的顺序和遍历的顺序不一致,无法预测遍历的顺序,今天我们来看Map的另一个实现类LinkedHashMap。 LinkedHashMap继承自HashMap,提供可以预测的迭代访问,即按照插入序 或访问序。原创 2017-11-10 16:32:21 · 1250 阅读 · 2 评论 -
Java集合之HashMap源码分析
HashMap应该是使用的一个频率很高的一个集合了,平时用得很多,但是了解并不深入,一起来看看HashMap的结构实现和功能原理。 HashMap(jdk 1.8)HashMap是Java的Map家族中一个普通成员,它根据键的hashCode值存储数据,具有很快的访问速度,但遍历顺序却是不确定的,也就是说插入顺序和遍历顺序没有什么关系的原创 2017-10-23 21:05:52 · 971 阅读 · 0 评论 -
Java集合之Vector源码分析
前面,我们已经学习了ArrayList,LinkedList,我们接着按着集合框架图学习–Vector。 Vector和ArrayList大同小异,都是动态数组,Vector和ArrayList差别很小,因此本文不会按照ArrayList那样分析,只是简单揭开Vector的面纱.原创 2017-10-12 20:47:05 · 691 阅读 · 0 评论 -
Java集合之LinkedList源码分析
前面,我们已经学习了ArrayList,我们接着学习集合框架——LinkedList。LinkedList(jdk 1.8)介绍LinkedList是基于链表实现的,是一种线性的存储结构。 LinkedList是一种双向非循环链表:链表中任意一个存储单元都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元继承体系原创 2017-10-06 14:33:23 · 960 阅读 · 0 评论 -
Java集合之ArrayList源码分析
集合是Java中非常重要而且基础的内容,平时我们使用得最多,其用法也很简单,会使用一个,基本其它就很easy了,得益于集合框架的设计,既然第一步使用已经会了,那么还是有必要深入了解一下,学习其设计技巧,理解其本质,这样不仅会用,还会用得更好,有了更深层次的理解,那么使用过程中都很明白,而不是乱用一通,如果出现问题,也容易排查,今天我们就开始Java 集合框架的探险之旅。ArrayListArrayL原创 2017-09-26 21:02:54 · 831 阅读 · 1 评论