在给定节点引用的Java中删除LinkedList中的节点

在给定节点引用的Java中删除LinkedList中的节点,java,linked-list,doubly-linked-list,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 1

例如,如果我有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)...

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

我认为这只是一个复制粘贴错误,您忘记将节点x添加到链接列表中。假设您的正确代码如下所示:

Integer x = new Integer(10);
ll.add(x);
ll.add(4);
您可以使用
remove(objecto)
方法从java LinkedList中删除节点。因此,调用该函数可从linkedlist
ll
中删除节点
x

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

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

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

Integer x = new Integer(10);
ll.add(x);
ll.add(4);
您可以使用
remove(objecto)
方法从java LinkedList中删除节点。因此,调用该函数可从linkedlist
ll
中删除节点
x

ll.remove(x); //removes x from linkedlist but does not delete object x
它将从linkedlist中删除
x
,但对象
x
在您的代码中仍然有效,可以在其他任何地方使用。

请查看

对于
java.util.LinkedList

public E-remove(int-index)

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

还有一个
remove(objectx)
,它的作用与此相同,只是针对一个特定的对象,而不是索引

这就是你要找的吗

看一看

对于
java.util.LinkedList

public E-remove(int-index)

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

还有一个
remove(objectx)
,它的作用与此相同,只是针对一个特定的对象,而不是索引


这就是你要找的吗

您从未将
x
添加到您的列表中。您的链接列表将是1->2->3->4,因为您从未将10添加到列表中您所说的“我仍然有对该节点x的引用”是什么意思?你是说删除“x”后你仍然需要对“x”的引用,还是说你只是对“x”有一个引用,你想删除它对不起,我忘了添加x,被重新编辑过,可能是你从未将
x
添加到你的列表中的重复项。你的链接列表将是1->2->3->4,因为你从未将10添加到列表中,这是什么意思“我仍然有对该节点x的引用”?你的意思是在删除“x”后,你仍然需要对“x”的引用,还是说你只是对“x”的引用,并且你希望删除该节点?对不起,我忘了添加x,再次编辑,非常感谢!这正是我要找的!注意这是一个O(n)操作。
java.util.LinkedList
不公开其内部节点,因此在恒定时间内删除元素的唯一方法是在列表上进行迭代。这使得LinkedList#removeIf非常简单O(n),但在删除单个元素时,与ArrayList相比没有任何好处。非常感谢!这正是我想要的!请注意,这是一个O(n)操作。
java.util.LinkedList
不公开其内部节点,因此在恒定时间内删除元素的唯一方法是在列表上进行迭代。这使得LinkedList#removeIf非常简单,但在删除单个元素时与ArrayList相比没有任何好处。