在给定节点引用的情况下,删除Java中的链接列表中的节点

时间:2013-11-12 04:11:37

标签: java linked-list doubly-linked-list

例如,如果我有LinkedList

LinkedList<Integer> ll = new LinkedList<Integer>();
ll.add(1);
ll.add(2);
ll.add(3);
Integer x = new Integer(10);
ll.add(x);
ll.add(4);
// now the list looks like 1->2->3->10->4

// what if I want to remove 10 and I still have the reference to that node x
// what is the API of that
// somethings like ll.remove(x)...

如果我自己实施双向链表,只需

currentNode.prev.next = currentNode.next;
currentNode.next.prev = currentNode.prev;

Java的LinkedList实现是否支持此操作?

2 个答案:

答案 0 :(得分:3)

我相信它只是一个复制粘贴错误,您忘记将节点x添加到链接列表中。假设你的代码是这样的:

Integer x = new Integer(10);
ll.add(x);
ll.add(4);

您可以使用remove(Object o)方法从java LinkedList中删除节点。因此,请将其从链接列表x中删除节点ll

ll.remove(x); //removes x from linkedlist but does not delete object x

它会从链接列表中删除x,但对象x在您的代码中仍然存在且可在其他任何位置使用。

答案 1 :(得分:3)

看看the javadoc

java.util.LinkedList<E>

  

public E remove(int index)

     

删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。返回从列表中删除的元素。

还有一个remove(Object x)执行相同但对于特定对象而不是索引。

那是你在寻找什么?