ArrayList和LinkedList、Vector的区别

在这里插入图片描述

1 ArrayList和LinkedList的区别:

(1)相同点:

  • LinkedeList和ArrayList都实现了List接口。
  • ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。

(2)不同点:

  • ArrayList底层的实现数组,而LinkedList是双向链表。
  • ArrayList进行随机访问所消耗的时间是固定的,因此随机访问时效率比较高。
    LinkedList是不支持快速的随机访问的,但是在插入删除时效率比较高。
2 ArrayList和Vector的区别:

(1)相同点:

  • ArrayList和Vector都是用数组实现的。
  • 默认初始化大小都是10

(2)不同点

  • Vector多线程是安全的,而ArrayList不是。Vector类中的方法很多有synchronized进行修饰,这样就导致了Vector在效率上无法与ArrayList相比;
  • 两个都是采用的线性连续空间存储元素,但是当空间不足的时候,两个类的增加方式是不同的。(ArrayList每次存储时会检查空间大小,不够时会扩充为原来的1.5倍,Vector会扩充为原来空间的2倍)
//capacityIncrement——增长因子
public Vector(int initialCapacity, int capacityIncrement) {
        super();
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        this.elementData = new Object[initialCapacity];
        this.capacityIncrement = capacityIncrement;
    }
  private int newCapacity(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                         capacityIncrement : oldCapacity);
  • Vector可以设置增长因子,而ArrayList不可以。
  • ArrayList有三个构造方法,Vector有四个构造方法。