集合类中的ArrayList和Vector的区别

标准的解释:

  1. ArrayList不是线程安全的,Vector是线程安全的
  2. 底层数组容量不够的时候,ArrayList拓展为原来的1.5倍,vector拓展为原来的2倍。

细细对比:

  1. 源码实现:
    ArrayList的底层实现:


    ArrayList的源码实现

    Vector的底层实现:


    Vector的源码实现
  2. 方法的对比;
    Vector的重要方法
    get(……)
    add(……)
    remove(……)
    isEmpty(……)
    size(……)
    capacity(……)
    ······


    Vector的几种方法

都使用了synchronized关键字,操作中会加锁释放锁保证线程安全,但是会为系统带来更多的开销。
ArrayList则没有该关键字,所以线程不安全。


ArrayList的方法

再看一点扩容


ArrayList的扩容方法grow

Vector的扩容方法grow

1.5和2的对比

  1. 线程安全牺牲了时间空间,线程不安全效率上占优势。鱼与熊掌不可兼得。
    类似的组合还有:
- 线程安全 非线程安全
StringBuilder
StringBuffer
HashMap
HashTable
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 时间可以约定,爱也可以约定。他们仨对爱侣的美满幸福的姻缘在自然而然中慢慢滋长,一切来得那样悠然,那样从容-----...
    松柏还好阅读 353评论 0 0
  • 原文出处 我与她及她的猫 0.下载PyCharm , 下载后直接安装即可,但不要打开。 官方链接 1.安装Jav...
    EnjoyWT阅读 3,330评论 0 0
  • 周末了,老友记蠢蠢欲动,最后把目标锁定顺德碧江古村落! 碧江古村始于南宋,古称“迫岗”,后来取其谐音叫“碧江”,距...
    雁喃阅读 1,393评论 0 3