问题描述
如何从LinkedList获取对实际节点(入口)对象的引用-不是其拥有的值?
像这样的东西:
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> test = new LinkedList<String>();
test.addLast("first");
test.addLast("second");
test.addLast("third");
var thirdNodeReference = test.getLastNode(); // Does this even exist ?
test.addLast("fourth");
var secondNodeReference = thirdNodeReference.previous(); // To perform such operations.
}
}
java LinkedList中是否存在像LinkedList.getLastNode()
这样的方法,以便可以对其执行previous()
或next()
操作?
我知道LinkedList.listIterator()
存在,但没有用,因为我将拥有对每个Node(条目)的引用,并且我需要使用它们-例如上面代码中的lastNodeReference
。
如果JAVA标准库中不存在这样的功能,那么我可以使用任何第三方(外部)库吗?
原因:
我需要访问节点才能在remove()
中执行O(1)
操作。
在实际的JAVA code implementation中,它通过遍历列表以对路径上的每个节点执行O(N)
来查找包含给定对象的Node,从而在equals()
中执行此操作。另外,请检查此comment。
如果我们直接引用Node对象,那么可以理想地在O(1)
中执行此操作-因为remove()
仅需要更改previous
和next
Node的2个指针。>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)