• 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线程安全,适合在多线程访问时使用,效率较低

  • 相关阅读:
    单链表的基本操作--c++
    剑指Offer-- 替换空格
    华为机试题-字符串分隔
    Leetcode 98. Validate Binary Search Tree
    树的层次遍历的几种方法
    Camera Path插件的使用
    3d 人物残像
    gameUnity 0.15 beta 网络游戏框架
    gameUnity 0.15alpha 网络游戏框架
    gameUnity 网络游戏框架
  • 原文地址:https://www.cnblogs.com/kyrieblog/p/11128882.html
Copyright © 2020-2023  润新知