欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList和Vector区别以及其扩容机制,arraylistvector

来源: javaer 分享于  点击 5488 次 点评:210

ArrayList和Vector区别以及其扩容机制,arraylistvector


ArrayList和Vector区别以及其扩容机制

相同点:
  1、ArrayList和Vector都是继承了相同的父类和实现了相同的接口
    (extends AbstractList implements List, Cloneable, Serializable, RandomAccess)
  2、底层都是数组(Object[])实现的
  3、初始默认长度都为10

不同点:
  1、同步性(Synchronization):
    Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。
  2、扩容(Resize):
    ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍。
  3、性能(Performance):
    由于第一点的原因、在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。
  4、快速失败(fail-fast):
    什么是fail-fast:参见另一边博文: // TODO
    Vector 的 elements 方法返回的 Enumeration 不是 快速失败(fail-fast)的。而ArrayList是快速失败(fail-fast)



扩容机制:
其底层的扩容方法grow()
ArrayList的扩容方法:
// jdk1.7.0_79
private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
}
在满足扩容条件时、ArrayList1.5倍的方式在扩容(oldCapacity >> 1 结果为二分之一的oldCapacity)。

Vector的扩容方法:

// jdk1.7.0_79
private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                     capacityIncrement : oldCapacity);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    elementData = Arrays.copyOf(elementData, newCapacity);
}
Vector当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍。之后讲新数组长度:newCapacity与所需的最小容量:minCapacity进行比较、较大者作为最终的新长度。




相关文章

    暂无相关文章

用户点评