近在回顾数据结构,想到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

网友评论