zoukankan      html  css  js  c++  java
  • Arraylist 和 Vector 和Linkedlist的区别

         1.首先我们从它们底层数据结构来分析

              (1)Arraylist 和 Vector都是基于数组实现的,你可以从它的单词结构构成都可以看出,但是这个两个还是有一点点区别的

                      Arraylist的实现原理是采用一个动态对象数组实现的,默认构造方法创建一个空数组

               

                

             Vector的实现原理也是采用一个动态对象数组实现的,只不过它的默认构造方法创建一个大小为10的对象数组

              

           

          

         

        (2) Arraylist第一次添加元素时候,扩展容量为10,之后的扩充算法:原来数组大小+原来数组的一半(也就是1.5倍)

          

          

         

         

         

    应该可以很清楚的知道ArrayList底层扩容的原理了。而Vector和Arraylist的扩容机制类似,与Vector不同的是,Vector分两种情况如果增量为0的情况下每次扩容容量是翻倍,即为原来的2倍,而当增量>0的时候,扩充为原来的大小加增量,而ArrayList是1.5倍。看似1.5倍增长的很慢,那经常增加大量元素会不会导致经常扩容,数组重新分配导致效率低下呢?其实不然,每次增长为原来的1.5倍实际增长的量会越来越大的
       (3)所以Arraylist和Vector不适合进行删除或插入操作

        (4)为了防止数组动态扩充过多,建议创建ArrayList或者Vector时,给定初始容量。

        (5)Arraylist多线程中使用不安全,适合在单线程访问时使用,效率较高,而Vector线程安全,适合在多线程访问时使用,效率较低

  • 相关阅读:
    计算机网络(1)----概述
    博客园自定义样式
    linux进程
    接口回调解析
    优先级队列
    双栈实现队列
    递归解决反转链表的一部分
    Multisim 之逻辑转换仪
    Multisim 如何添加文本 如何编辑文本字体
    Multisim 中的一些快捷键
  • 原文地址:https://www.cnblogs.com/kyrieblog/p/11128882.html
Copyright © 2011-2022 走看看