java - 如何从 Java 中的 LinkedList 获取节点条目参考
问题描述
如何从 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.
}
}
是否存在类似于LinkedList.getLastNode()
java LinkedList 的方法,以便可以对其执行previous()
或next()
操作?
我知道LinkedList.listIterator()
存在,但这没有用,因为我将引用每个节点(条目),并且我需要使用它们 - 例如lastNodeReference
在上面的代码中。
如果 JAVA 标准库中不存在这样的功能,我可以使用任何第三方(外部)库吗?
原因:
我需要访问节点以remove()
在O(1)
.
在实际的JAVA 代码实现O(N)
中,它通过遍历列表来执行此操作,通过equals()
在其路径上的每个节点上执行来查找包含给定对象的节点。另外,请检查此评论。如果我们直接引用 Node 对象,
这可以理想地执行- 因为只需要更改Node和Node.js 的 2 个指针。O(1)
remove()
previous
next
解决方案
LinkedList 上有一个descendingIterator方法,它被描述为Returns an iterator over the elements in this deque in reverse sequential order
,虽然它不(完全)清楚 OP 想要什么,但 Iterator 确实有一个 .next、.previous 和 .remove 方法。
推荐阅读
- mysql - 即使新值相同,MySQL“ON DUPLICATE KEY UPDATE”是否也会替换该值?
- sql - 如何返回达到某个阈值的日期
- node.js - 如何在基于 Debian 的映像(Dockerfile)中安装 Node.js 版本 16.xx?(为什么这么难?)
- jquery - JSX 和 JQuery 未定义变量
- javascript - 如何使用“framer-motion”创建与标签无关的组件实用程序?
- c++ - 使用 0.5 libyaml-cpp-dev 构建失败并出现 boost 错误
- r - Cox回归HR分组
- python - self.action is None in DRF
- .net-core - Generating keys for RSA dotnet core
- reactjs - Single-page application: Sign-in and Sign-out