0

例如,如果我有 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 实现是否支持这种操作?

4

2 回答 2

3

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

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

remove(Object o)您可以使用方法从 java LinkedList 中删除节点。所以调用它x从 linkedlist中删除节点ll

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

它将x从链表中删除,但对象x在您的代码中仍然存在并且可以在其他任何地方使用。

于 2013-11-12T04:16:06.843 回答
3

看看javadoc

为了java.util.LinkedList<E>

public E remove(int index)

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

还有一个remove(Object x)做同样的事情,但针对一个特定的对象,而不是一个索引。

那是你要找的吗?

于 2013-11-12T04:16:23.163 回答