Java链表问题

标签 java linked-list

我试图了解链表是如何在 Java 中实现的。

我应该为列表和节点创建单独的链表类,还是可以只调用 import java.util.LinkedList,还是两者都需要?

另外,我们需要一个迭代器来打印列表吗?

最佳答案

您在这里提出了几个不同的问题。我想我已经在这里解决了所有问题,所以如果我遗漏了什么,请告诉我:

  1. 如果您的目标是成为链接列表的客户端,那么您应该使用java.util.LinkedList。这是一个预先编写的、优化的链表实现,适用于大多数应用程序。

  2. 如果您的目标是实现链表,那么您至少需要有一个表示链表节点的类。根据您的用例,您可能还需要考虑创建一个类,例如 LinkedList,封装列表并围绕它导出一个漂亮的界面,以简化客户端的常见任务。通常,您可以通过将链表节点类型定义为面向客户端的链表内部的嵌套类来实现此目的。

  3. 您可以拥有一个同时使用自定义链接列表类和 LinkedList 集合的程序。一个用例是让一个程序主要使用 LinkedList 作为队列的实现,但使用公开的自定义链表来执行其他任务,在这些任务中需要专门将列表拼接在一起或将单个单元格从列表中拉出。例如,如果您要实现斐波那契堆,即使您在程序中的其他地方使用 LinkedList,您也可能会实现自己的链表。两者并不相互排斥。

  4. 我不确定你上一个问题中的“迭代器”是什么意思。如果要打印链接列表的内容,最好的方法是创建对链接列表的第一个单元格的引用,然后不断向前移动直到到达列表的末尾。是否将其包装在 java.util.Iterator 对象中取决于您。创建实际的 Iterator 类型来执行迭代可能是最简单的,因为它允许您与 foreach 循环和其他操作集合的 API 进行交互。

希望这有帮助!

关于Java链表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183546/

相关文章:

java - 如何创建用于拆分请求参数并收集返回结果的自定义注释?

c - 使用递归从末尾开始的第 n 个节点(链表)

c - 链表的最大限制

java - 如何构造一个包含多种数据类型值的字节数组?

java - Cassandra:在 super 列上设置 TTL

java - 如何在满足一定条件的情况下迭代节点列表并替换内容?

java - Spring/Jackson 映射内部 JSON 对象

c++ - 为什么这个合并排序函数返回带零的链表(C++)?

c - 链表数据都一样

打印链表后崩溃