??????????????????1.??????????????????2.?????????????????????????????????????????remove(Object o)???????????equals????????remove(int index)???????±??????????????????????臨?????????2?У?????revome()???????????unlink(Node<E> x)??????????????????????????????????????????????????
//unlink(Node<E> x)????????Node
E unlink(Node<E> x) {
final E element = x.item;
final Node<E> next = x.next;
final Node<E> prev = x.prev;
if (prev == null) {//??????????????
first = next;
} else {
prev.next = next;
x.prev = null;
}
if (next == null) {//??????????????
last = prev;
} else {
next.prev = prev;
x.next = null;
}
x.item = null;//let GC work
size--;
return element;
}
????get()
????get(int index)???????±???????????????????????????node(int index)????????
????public E get(int index) {
????checkElementIndex(index);//index >= 0 & index < size;
????return node(index).item;
????}
????set()
????set(int index?? E element)??????????±????????????????????????node(int index)???????±????????????????Node??item?????
public E set(int index?? E element) {
checkElementIndex(index);
Node<E> x = node(index);
E oldVal = x.item;
x.item = element;//?滻???
return oldVal;
}