• ArrayList和Vector区别及源码


    本文基于jdk1.7

    1.ArrayList

                          类图来自:作者 Java3y

     源码分析:

    1.1 属性

    1.2 构造方法

    Arrays.copyOf源码:

    1.3 trimToSize方法, 修改当前 ArrayList实例的容量为存入的实际值数量的大小。 

    1.4 扩容方法,以确保它可以至少保存mincapacity个元素数(扩容原理:以1.5倍进行扩容,使用Array.copyOf复制数组到新的数组,并且使用扩容后的新数组的引用

    1.5 grow扩容算法,增加原来的1.5倍

    1.5 add 向ArrayList中添加元素(一直调用系统方法插入元素,所以特别消耗资源)

     1.6 remove方法

    2.Vector

    2.1成员变量

    2.2 构造方法

    2.3 扩容方法

    综上所述:

    两者之间的区别:

    1.ArrayList是线程不安全的,而Vector是线程安全的。

    2.ArrayList扩容大小是原来的0.5倍,而Vector是原来的1倍,并且Vector可以设置扩容大小,ArrayList则不可以设置,但是两者都是通过Arrays.copyOf()方法进行扩容的。

    3.ArrayList效率高于Vector。

    4.两者都可以设置初始数组的大小,

  • 相关阅读:
    053592
    053591
    053590
    053589
    053588
    053676
    C# WPF Border控件总结
    Android Studio 添加jar或aar依赖的两种方式
    javascript Date与string之间的转换
    C#:使用dsoframer.ocx控件实现内嵌office效果(详解)
  • 原文地址:https://www.cnblogs.com/teiba/p/9017316.html
Copyright © 2020-2023  润新知