------------【源码解析】
文章平均质量分 66
你是我世界的光
不念过往,不畏将来。
展开
-
HashSet源码分析(基于1.8)
其实对于HashSet,他的源码很简单,只是里面有些问题我感觉有必要拿出来跟大家共同探讨一下。HashSet底层是HashMap实现我们知道,HashMap中key值是不能“重复”的(这个是否重复是通过hashcode和equals比较出来的,这是一个值得探讨的问题),HashSet正是借鉴了HashMap的key的这样一个特性,以此产生了这样一个不能包含重复数据的集合。源码分析由于源码不是很多,所原创 2016-06-24 16:40:51 · 2795 阅读 · 1 评论 -
TreeMap分析
1.8与1.7相比,TreeMap的实现并没有发生改变。或者说,从1.2版本开始,TreeMap就没有发生过变化。由于TreeMap的实现没有变化,推荐阅读倪升武博客。下面我只是来总结一下倪升武的博客中没有提及的或者是我认为比较重要的几点。一.TreeMap的几个重要特点TreeMap内部是使用红黑树结构存储的。TreeMap中允许null值作为value,但是不允许null成为key。下面是原创 2016-08-14 15:52:42 · 1780 阅读 · 1 评论 -
Map接口源码分析
本来打算写HashSet的源码分析的。但是发现HashSet的实现依赖于HashMap,因此这里转向Map分支的源码分析,到最后再将Set分支的补完整。Map的结构图 - SortedMap接口是有序的键值对的集合,排序依据是比较器的比较逻辑。 - AbstractMap下有三个实现类,其中TreeMap实现了NavigableMap接口,所以TreeMap中也是有序的键值对集合。 - Has原创 2016-06-22 23:54:28 · 3997 阅读 · 0 评论 -
LinkedList源码分析
LinkedList类继承了AbstractSequentialList< E >抽象类并实现了List接口。在AbstractSequentialList类中,其实主要是实现一些关于索引的方法。因此LinkedList中也支持“随机访问”。但这种随机是伪随机的,稍后我们可以看到。这里我结合今天下午我参加的一场面试来简要说一下关于LinkedList和ArrayList的一些问题。ArrayLis原创 2016-06-22 00:04:49 · 2156 阅读 · 0 评论 -
ArrayList部分源码分析(基于1.8)
今天分析第一个集合类:ArrayList首先,说一下我读这部分源码的感受。ArrayList类底层实现实际上是数组,因此很多操作会调用很多本地(Native)方法来实现或者部分实现。用java实现的很多方法中,只是用java代码进行了一些必要的逻辑判断和变量值的改变。在AbstractList中加入的modCount变量是为了配合迭代器的使用。下面是部分源码分析:package java.u原创 2016-06-20 18:24:01 · 1956 阅读 · 1 评论 -
Collection架构源码分析(基于1.8)
Collection接口有三个子接口,我们主要来分析一下其中的两种:List和SetList:有序集合,其中元素可以重复。Set:无序集合,元素不可以重复。原创 2016-06-18 16:01:29 · 1973 阅读 · 0 评论 -
JAVA常用集合框架源码解析(基于1.8)开题篇
倪升武的博客中有一个小专题,读完之后,发现博主的分析基本是基于JAVA1.7的,这里我基于JAVA1.8给出一些新的解读。因为在彻底浅读完JAVA1.8集合部分之前,我无法了解JAVA1.7与1.8之间关于集合框架的改动到底会有多少,因此可能产生某些个人理解上的不当,希望大家可以予以指正。集合分类1.Collection框架首先是一个Collection框架图: 标注:从网上看过好多图片,分类是比原创 2016-06-18 11:04:17 · 2708 阅读 · 0 评论 -
Object类源码解析
本文的分析基于JDK 1.8 JAVA中所有的类都继承自Object类。Object类的源码解析1.void registerNatives() private static native void registerNatives(); static { registerNatives(); }该方法只是对几个本地方法进行注册(即初始化java方法映射到C的方原创 2016-06-14 20:01:27 · 3748 阅读 · 3 评论 -
HashSet源码解析
Set接口在讲HashSet之前先说一下Set接口。见源码:package java.util;//这里我截取部分源码中的注释/** * A collection that contains no duplicate elements. More formally, sets * contain no pair of elements e1 and e2 such t原创 2016-07-22 13:27:50 · 388 阅读 · 0 评论 -
HashMap源码分析(基于1.8)
HashMap1.7和1.8变动比较多。 关于HashMap 1.7的版本,倪升武的博客总结的很好。这里我主要来介绍一下1.8中的HashMap。由于HashMap源码太长,我只挑选了部分进行分析,如果有没有分析到的重点难点或者大家有疑问的地方,希望大家私信给我~。HashMap的存储思想演化在1.7中,HashMap是以“数组+链表”的基本结构来存储key和value构成的Entry单元的。其中原创 2016-06-23 23:09:51 · 3169 阅读 · 0 评论