例如,如果我有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实现是否支持此操作?
答案 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)
执行相同但对于特定对象而不是索引。
那是你在寻找什么?