我把ppt删除逻辑看完 自己先尝试着写了一些代码,再回过头看老师的实现,
有一处有出入的地方,可能对GC方面了解的比较浅薄,所以产生了一个疑问;
老师的删除实现中,把删除的节点的next域赋值为null,而我的代码则是直接把删除的节点赋值为null;
所以如果按照我的实现方式,那删除节点中next域中还持有的下一个节点的引用,那这块内存空间最后能不能被GC回收。
public E remove(int index){
if (index < 0 || index >= size) {
throw new IllegalArgumentException("LinkedList.remove failed, index is illegal!");
}
Node previous = dummyHead;
for (int i = 0; i < index; i++){
previous = previous.next;
}
Node<E> current = previous.next;
previous.next = current.next;
E ret = current.data;
current = null;
return ret;
}