1.8 jdk Arraylist集合源码分析
底层数组,size是有效数据的长度,
在1.8中调用无参数构造器时底层的elementdata数组初始化为{ }
add方法
在调用add方法后底层数组才重新赋值,为新的数组,长度为10,节省了内存,只有在需要添加的时候我们才要创建数组
Vector接口
底层是Object数组,int类型属性表示数组中的有效数据
Vector vr = new Vector();调用构造器的时候
add
list和Vector的区别
底层都是数组的扩容
区别:
ArrayList:
ArrayList底层扩容长度为缘数组的1.5倍,线程不安全,效率高
Vector:
底层扩容长度为原数组的两倍,线程安全,效率地,已经淘汰
底层都为数组:
优点:查询效率高
缺点:删除元素效率低,
特点:可重复