Java集合类中ArrayList和Vector的联系与区别?

本文主要讲解集合类中Collection的子接口之一List接口的实现类:ArrayList和Vector的联系与区别。如有错误,欢迎指出。感谢!

相同点

  1. 都实现了List接口,存储有序的、可重复的元素;
  2. 二者底层都是使用Object[] elementData 数组来存储;
    底层源码

不同点

  1. ArrayList是作为List接口的主要实现类,其实也就是说如果没有什么特殊需求,需要用一个有序的、可重复的结构代替数组,那就new一个ArrayList就可以了;Vector是List接口的古老实现类,在JDK1.0时候就推出了;
    底层源码

  2. ArrayList是线程不安全的,执行效率高;而Vector底层源码里面是很多synchronized同步方法的,是线程安全的,相对效率就低;
    Vector底层源码

  3. 在扩容方面,ArrayList和Vector默认初始化容量都是10。不过展开来说的话,ArrayList在JDK7时候,底层数组初始化长度为10,当添加元素导致数组容量不够时进行扩容,扩容为原来的1.5倍,同时需要将原来数组中的元素复制到新数组中;而在JDK8时候改成在添加元素时才创建长度为10的数组,其他与JDK7无差;
    然后Vector在JDK7和8时都默认扩容为原来数组的2倍。
    底层源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值