1.8 jdk Arraylist集合源码分析
-
底层数组,size是有效数据的长度,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Lz38DKd-1637915125202)(javaSE.assets/image-20210702131007819.png)]](https://i-blog.csdnimg.cn/blog_migrate/601d917884fa69041d452393c967f0df.png)
-
在1.8中调用无参数构造器时底层的elementdata数组初始化为{ }
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5x9LA6Cz-1637915125204)(javaSE.assets/image-20210702130917062.png)]](https://i-blog.csdnimg.cn/blog_migrate/bc00cd8ebfe6d0223d20274f35e84a97.png)
-
add方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BC8OPiu-1637915125206)(javaSE.assets/image-20210702131557550.png)]](https://i-blog.csdnimg.cn/blog_migrate/5b64c363a984223bffcb226e298e0077.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiJay61P-1637915125207)(javaSE.assets/image-20210702141425499.png)]](https://i-blog.csdnimg.cn/blog_migrate/380e9d7f2b0de57fbfa34c43687a0cca.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZUhIpW4-1637915125208)(javaSE.assets/image-20210702131254719.png)]](https://i-blog.csdnimg.cn/blog_migrate/fd2955bcff54fadc09ffe7e308074918.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TrX2O4b5-1637915125209)(javaSE.assets/image-20210702131425929.png)]](https://i-blog.csdnimg.cn/blog_migrate/71b2d99355e6b5c4b654f4e453c0f50a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Sq1CUDL-1637915125210)(javaSE.assets/image-20210702131853546.png)]](https://i-blog.csdnimg.cn/blog_migrate/a1ed6227a67ed9a39b41b534f516c180.png)
在调用add方法后底层数组才重新赋值,为新的数组,长度为10,节省了内存,只有在需要添加的时候我们才要创建数组
Vector接口
-
底层是Object数组,int类型属性表示数组中的有效数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOezJGjO-1637915125211)(javaSE.assets/image-20210702132347392.png)]](https://i-blog.csdnimg.cn/blog_migrate/593be16eb78c818a189f338cf9b2307b.png)
-
Vector vr = new Vector();调用构造器的时候
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4L9GXp6-1637915125211)(javaSE.assets/image-20210702132455181.png)]](https://i-blog.csdnimg.cn/blog_migrate/74cb48a9361f9f21c1acdc772c4a3be8.png)
-
add
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-56EVJZwR-1637915125212)(javaSE.assets/image-20210702132630927.png)]](https://i-blog.csdnimg.cn/blog_migrate/ab4d61267ecb29a3970e71a303fc8d45.png)
list和Vector的区别
底层都是数组的扩容
区别:
ArrayList:
- ArrayList底层扩容长度为缘数组的1.5倍,线程不安全,效率高
Vector:
- 底层扩容长度为原数组的两倍,线程安全,效率地,已经淘汰
底层都为数组:
- 优点:查询效率高
- 缺点:删除元素效率低,
- 特点:可重复
1.8 Java ArrayList与Vector底层源码分析与区别详解
本文详细解析了Java 1.8中ArrayList和Vector集合的底层实现,包括它们的初始化、数组扩容机制和性能特点。重点比较了两者在数组长度扩展策略、线程安全性和效率上的差异。
171万+





