Java进阶:【集合】1.8 jdk Arraylist和Vector集合源码分析

1.8 jdk Arraylist集合源码分析

  1. 底层数组,size是有效数据的长度,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Lz38DKd-1637915125202)(javaSE.assets/image-20210702131007819.png)]

  2. 在1.8中调用无参数构造器时底层的elementdata数组初始化为{ }

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5x9LA6Cz-1637915125204)(javaSE.assets/image-20210702130917062.png)]

  3. add方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BC8OPiu-1637915125206)(javaSE.assets/image-20210702131557550.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiJay61P-1637915125207)(javaSE.assets/image-20210702141425499.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZUhIpW4-1637915125208)(javaSE.assets/image-20210702131254719.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TrX2O4b5-1637915125209)(javaSE.assets/image-20210702131425929.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Sq1CUDL-1637915125210)(javaSE.assets/image-20210702131853546.png)]

    在调用add方法后底层数组才重新赋值,为新的数组,长度为10,节省了内存,只有在需要添加的时候我们才要创建数组

Vector接口

  1. 底层是Object数组,int类型属性表示数组中的有效数据

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KOezJGjO-1637915125211)(javaSE.assets/image-20210702132347392.png)]

  2. Vector vr = new Vector();调用构造器的时候

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4L9GXp6-1637915125211)(javaSE.assets/image-20210702132455181.png)]

  3. add

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-56EVJZwR-1637915125212)(javaSE.assets/image-20210702132630927.png)]

list和Vector的区别

底层都是数组的扩容

区别:

ArrayList:

  1. ArrayList底层扩容长度为缘数组的1.5倍,线程不安全,效率高

Vector:

  1. 底层扩容长度为原数组的两倍,线程安全,效率地,已经淘汰

底层都为数组:

  1. 优点:查询效率高
  2. 缺点:删除元素效率低,
  3. 特点:可重复
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值