如何从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.
    }

}

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()仅需要更改previousnext Node的2个指针。>

解决方法

链表可以这样表示:
enter image description here

所以不,您无法获得带有链表的上一个元素。 您可能想实现一个双向链接列表,tho(示例代码可以在Google上很容易找到)

,

LinkedList上有一个descendingIterator方法,描述为Returns an iterator over the elements in this deque in reverse sequential order,虽然(完全)不清楚OP需要什么,但Iterator确实具有.next,.previous和。删除方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...