java - Java中LinkedList的实时效率

标签 java doubly-linked-list

我们知道双链表数据结构的优点是,如果您已经在要插入的位置之前或之后获得了节点,则可以在 O(1) 时间内插入节点。 (例如,如果你有一个双链表:A-B-C-D,如果你已经得到了节点C,那么在节点C之前或之后插入一个新节点只需要O(1)时间)。

如果你在Java/C++中手动构造一个双链表,那是相当容易理解的,但是我最近对Java中的LinkedList库感兴趣,它是java.util中提供的双链表数据结构。如果我想使用java提供的LinkedList库,我如何像我在第1段中提到的那样执行O(1)插入或删除?我做了一些研究,你可以创建一个LinkedList的ListIterator,它可以向前和向后遍历,然后插入和删除前一个或后一个节点。但还是需要遍历。如果我已经有了节点C,如何在O(1)时间内直接获取对应的Iterator?

最佳答案

LinkedList 类在遍历期间或在列表的开头/结尾处提供 O(1) 插入/删除时间。这并不意味着您可以在列表中间随机选取一个节点并在 O(1) 时间内将其删除或在其旁边插入某个节点。

关于java - Java中LinkedList的实时效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528087/

相关文章:

java - 使用单独的容器启动工具栏 setScrollOffUponContentPane()

java - 检测正在运行的 jar 文件的路径有效 - 但 BufferedWriter 写入 jarfilename.jarmyfile.txt

java - 在 Spring 应用程序中同时使用 Vaadin 和 Spring WebFlux,如何设置路由?

Java:字符串操作。获取 URL 中的最后一个子路径

java - DoubleNode ADT - 打印节点的节点

Java Custom Sort Order Round Robin-ish 排序

java - 我应该使用迭代器还是简单循环?

c++ - 我的 DoublyLinkedList 中的打印函数会创建重复项。 C++

c++ - 其中有中间锁的双端队列列表

c++ - 双向链表总是只包含 1 条记录