直接点进源码看比较直接:
联系:
都是对集合的实现。
区别:
(1) ArrayList 的底层是对 Object[] 数组进行增删改查等操作;
transient Object[] elementData;
(2) Linklist 的底层是对节点进行操作:
transient Node<E> first;
节点与节点之间进行关联, 形成双向链表。
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
(3) Vector 与 ArrayList 底层相同: 对 Object[] 数组进行增删改查等操作;
但是: 大部分的 public 方法都添加了 synchronized 同步锁;
public synchronized int size() {
return elementCount;
}
他们之间的区别, 实际上是:
数组与链表的区别;
同步与异步的区别;