JDK源码 - ArrayList】的更多相关文章

/** * ArrayList源码分析 * @author liyong * */ public class Util { @SuppressWarnings("unchecked") public static void main(String[] args) { List list = new ArrayList<>(); //① add(E) //ArrayList类有一个属性 -> transient Object[] elementData; //创建对象就…
前言   推荐一位大牛的博客: https://blog.csdn.net/eson_15/article/details/51121833 我基本都是看的他的源码分析,刚开始如果直接看jdk源码可能有一些晕,难免会中途放弃,建议先根据博客,根据别人分析好的一步一步走,会有恍然大悟的感觉,然后再自己去根据jdk对照着看,最后脱离博客在看一遍,如果还有兴趣就动手手写,如果更有兴趣,看看它还那些需要优化的(666~~~) 正文 几种构造方法 //带数组长度的构造方法public ArrayList(…
先上别人的源码分析http://www.cnblogs.com/roucheng/p/jdkfenxi.html 这个链接也不错:http://www.jianshu.com/p/8d14b55fa1fb 具体需要注意的几点: 1.默认new ArrayList()时创建一个长度为0的数组.当添加新元素的时候,如果是这种方式添加的则直接将数组长度扩展到10. 2.数组为null和空数组new Object[0]的区别是:假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回n…
序 如同C语言中字符数组向String过渡一样,作为面向对象语言,自然而然的出现了由Object[]数据形成的集合.本文从JDK源码出发简单探讨一下ArrayList的几个重要方法. Fields //序列化Id保证了集合是可以进行RPC通信的 private static final long serialVersionUID = 8683452581122892189L; //作为一个普通Object[]数组,集合的默认长度是10 private static final int DEFAU…
最近在看JDK源码,从源码的角度记录一下ArrayList和Vector的一些区别 1.new a.不指定长度 Vector默认创建10个元素的数组 public Vector() { this(10); } ArrayList默认指向一个0个元素的数组 public ArrayList() { super(); this.elementData = EMPTY_ELEMENTDATA; } b.指定长度 Vector创建指定元素个数的数组,默认增长量为0 public Vector(int i…
先看结果 分析源码 [jdk源码解析]jdk8的ArrayList初始化长度为0 java的基本数据类型默认值 无参构造 size()方法 isEmpty()方法…
一点一点看JDK源码(三)java.util.ArrayList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 ArrayList是一个容量不固定的容器,为单列,有序集合,容量可扩容,扩容系数为1.5 有最大值,一般达不到. ArrayList是线程不安全的,其扩容发生于集合修改的时候,如add,addAll等 ArrayList底层使用的是Object数组,初始化内容为10个容量的元素 使用ArrayList的时候,几种…
一点一点看JDK源码(四)java.util.ArrayList 中篇 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 在前篇中,对于java.util.ArrayList进行了一些源码注释,能坚持看完的估计都是神一般的存在. 不过看源码并需要一个艰苦的过程,枯燥是很正常的. 但是不是要一直都很枯燥,本文将对此类进行分类解析. 2.关注点 2.0.ArrayList是如何构成的? 在java中,一个类的构成并不是十分复杂,列…
一点一点看JDK源码(五)java.util.ArrayList 后篇之forEach liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 代码比较简单 ArrayList的forEach方法需要实现Consumer接口,实现其未实现的方法即可 该方法返回值为void,实际上就是任意写的了,代码如下: package com.FM.ArrayListStudy; import java.util.ArrayList; import jav…
一点一点看JDK源码(五)java.util.ArrayList 后篇之sort与Comparator liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) Comparator为额外实现的比较接口,与类本身无关 该接口在ArrayList的sort中有应用(很多时候都可以用的,只是以此举例) Comparator接口主要用途有两种, 1.比较有序集合内任意两个元素A.B(完全遍历的compareTo方法,于compare方法内实现) 若A…