近在回顾数据结构,想到JDK这样好的代码资源不利用有点可惜,这是第一篇,花了心思。篇幅有点长,希望想看的朋友认真看下去,提出宝贵的意见。 :)
类继承体系图
内部原理
ArrayList 的3个字段
private transient Object[] elementData; //对象数组,用于存储 持有对象的 引用 private int size; //代表了 ArrayList 的长度。随着插入 删除 添加 而改变。 protected transient int modCount = 0; //从AbstractList继承得到,这个字段最后介绍,先忽视它。
ArrayList保存的真的是对象吗?
elementData 是一个Object 数组,这是为了兼容任何类型(Java泛型是所有实际类型共享一份代码模板的!!!)。数组保存的实质是持有对象的引用(reference)。引用又可以理解为 对象的“遥控器”(如下图)。
从底层点的角度说,引用实质是指针的化身,因此ArrayList即便持有很多个对象,其本身(或者说elementData 数组)保存的只不过是引用而已,内存开销不会太大。
所以要强调的是:对于保存引用类型,java中的数组,和各种集合类,持有的是对象的引用,而不是对象本身。
构造函数
空ArrayList