Vector、ArrayList与LinkedList的区别?

LinkedList基于双向链表实现的java

private static class Node<E> {
  E item;
  Node<E> next;
  Node<E> prev;
}

每一个链表存储了 first 和 last 指针:数组

transient Node<E> first;
transient Node<E> last;

Vector:指针

public synchronized boolean add(E e) {
    modCount++;
    ensureCapacityHelper(elementCount + 1);
    elementData[elementCount++] = e;
    return true;
}

public synchronized E get(int index) {
    if (index >= elementCount)
        throw new ArrayIndexOutOfBoundsException(index);

    return elementData(index);
}

ArrayList与LinkedList、Vector的区别:code

  • LinkedList基于双向链表实现的,ArrayList基于动态数组实现,Vector基于动态数组
  • ArrayList支持随机访问
  • ArrayList添加元素是,可能会致使数组从新分配,LinkedList添加元素开销是固定的。
  • LinkedList在任意位置添加和删除操做效率高。
  • Vector与Arraylist相似,Vector是同步访问的,访问速度慢。
  • Vector 每次扩容请求其大小的 2 倍空间,而 ArrayList 是 1.5 倍
相关文章
相关标签/搜索