Collections-Arraylist 源码解读 (一)
🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家
📌 擅长领域:全栈工程师、爬虫、ACM 算法
💒 公众号:知识浅谈
Collections-Arraylist 源码解读(一)总结🤞这次都给他拿下🤞
正菜来了⛳⛳⛳
🎈类中变量
👉transient Object[] elementData;
elementData:ArrayList 对象底层的数组就是这个变量。
👉private static final long serialVersionUID = 8683452581122892189L;
serialVersionUID :这个变量用于标记这个 ArrayList 类的序列化和反序列化时候的一个标志,有这个的时候才会在序列化的时候带有这个变量,反序列化的时候才带有这个变量就可以与指定的反序列化的类对象比较。
👉private static final int DEFAULT_CAPACITY = 10;
DEFAULT_CAPACITY :用于标记创建一个 Arraylist 内部数组的大小,这个是在初始创建 ArrayList 的时候,没有指定大小,并且第一次添加元素的时候,会把 ArrayList 底层的数组大小设置为这个变量的值。
👉private static final Object[] EMPTY_ELEMENTDATA = {};
EMPTY_ELEMENTDATA :创建一个 ArrayList 对象的时候,指定参数为 0 的时候,elementData 指向这个元素。
👉private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
DEFAULTCAPACITY_EMPTY_ELEMENTDATA :这个和上边有点像,但是两者是有区别的,这个是在创建 ArrayList 对象的时候,没有指定大小的时候,elementData 指向这个元素,当第一次添加元素的时候,会把 elementData 与 DEFAULTCAPACITY_EMPTY_ELEMENTDATA 对比,如果 elementData 之前指向的是这个,就初始化容量为 10。
👉private int size;
size:elementData 包含的数组的数量的多少,不是指的数组的大小,而是指的这个数组中的元素的个数,因为创建 ArrayList 的时候,底层数组的大小和数组中内容是不一样的,一般是大于等于数组中的内容,因为涉及到扩容等问题。
🍚总结
以上为 ArrayList 中的属性变量对应的含义,希望对你有所帮助,下一篇:Arraylist 中各个属性方法的含义。
版权声明: 本文为 InfoQ 作者【知识浅谈】的原创文章。
原文链接:【http://xie.infoq.cn/article/5abe51230d622b45411a12518】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论