在给定节点引用的Java中删除LinkedList中的节点
例如,如果我有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<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中删除节点。因此,调用该函数可从linkedlistll
中删除节点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中删除节点。因此,调用该函数可从linkedlistll
中删除节点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相比没有任何好处。