这个类一般跟ArrayList比较起来。也从使用者角度来看下这个源码,最后比较下跟ArrayList有什么区别。
Vector vector=new Vector();
public Vector() {
this(10);
}
跟ArrayList不同的地方是,初始化使用先建立了一个10容量的数组。
public Vector(int initialCapacity, int capacityIncrement) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
//ArrayList是一样的,只不过方法加了锁,等于说线程安全了。
public synchronized boolean add(E e) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = e;
return true;
}
后续的操作跟ArrayList大同小异,就连方法名都是类似。下面看下
LinkedList。初始化什么也没做。看下add方法
public boolean add(E e) {
linkLast(e);
return true;
}
//这段可以看出,往最末尾插。如果末尾元素为空,代表是第一个元素。
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}
LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.当然,这些对比都是指数据量很大或者操作很频繁。