LinkedList list = new LinkedList();
list.add("hello java");//先存一个对象
list.remove("hello java");
-----------------------------
以下为源码:
public boolean remove(Object o) {
//这里分两种情况讨论
//一.我们传的这个Object o 对象如果是空
//二.如果对象不为空.
//我们属于第二中情况
if (o == null) {
for (Node<E> x = first; x != null; x = x.next) {
if (x.item == null) {
unlink(x);
return true;
}
}
} else {
//情况二:
//x=first表示从表头开始
//x!=null 表示只要没有到链表的最后就不停
//x = x.next 自增,遍历链表
//通过o.equals(x.item)找到我们的元素
//进入unlink()方法
for (Node<E> x = first; x != null; x = x.next) {
if (o.equals(x.item)) {
unlink(x);
return true;
}
}
}
return false;
--------------------------------------------------
//进入unlink()方法
E unlink(Node<E> x){
final E element = x.item;//这个是我们最终要删除的元素
final Node<E> next = x.next; //next表示被删除元素的下一个节点对象
final Node<E> prev = x.prev;//prev表示被删除元素的上一个节点对象
if(prev == null){ //如果被删除元素是第一个
first = next;//如果第一个被删除,next就是当前第一个节点
}else{//如果被删元素不是第一个
//被删元素上一个节点对象的next指向被删除元素的下一个节点
prev.next = next;
x.prev = null;//被删除元素断开与上一个节点的链接
}
if(next == null){//如果被删除元素是最后一个
last = prev;//删除最后一个节点后,上一个节点就是最后节点
}else{//如果不是最后一个
next.prev = prev;//下一个节点的上一个节点地址指向被删除元素的上一个节点对象
x.next =null;//被删除元素断开与上一个节点的链接
}
x.item = null;
size--;
mod Count++;
returen element;
}
LinkedList 类双向链表romove详解
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 链表是线性表的其中之一,线性表又是我们要学的数据结构的一部分,所以非常有学习价值,我们今天专门分析单链表和双链表。...
- 提到 LinkedList,我相信大部分 Java 开发者是知道的。但 Pythonner 也许并不知道。 在分享...