【问题标题】:Implementing Iterable in a Doubly Linked List in Java在 Java 中的双向链表中实现 Iterable
【发布时间】:2011-01-27 21:03:28
【问题描述】:

我已经构建了一个包含所有常规方法(add()、remove()、isEmpty()、size() 等)的 DoublyLinkedList

此列表包含具有 ListNode next、ListNode prev 和 T inf 字段的 ListNode。 (这里也很简单/经典)

我的问题是,如何使我的 DLL 可迭代。 根据我收集到的信息,我需要实现 Iterable 接口,并定义一个返回 Iterator 的 iterator() 方法。

这是我不明白的部分。 iterator() 方法是做什么的?怎么写?

任何指针表示赞赏。 提前致谢 PS:我知道我应该使用 java 包中已有的容器,但在这种情况下我需要自己做。

【问题讨论】:

  • 即使不允许您使用现有的集合,也值得看看它们的代码,看看如何实现Iterable 的具体示例。
  • @Péter:虽然这看起来像是一个学习练习,但在这种情况下,首先值得努力。

标签: java iterator linked-list


【解决方案1】:

iterator() 方法将返回一个额外类的实例。这将跟踪迭代器所在的节点,并允许您检查是否存在更多节点(通过hasNext())并移动到下一个节点(通过next())。

这个必须是一个独立于列表本身的对象,因为可以有多个迭代器同时遍历同一个集合。这是一个额外的状态,基本上:你在哪里。不要忘记迭代器从逻辑上的第一个元素之前开始 - 对next() 的第一次调用移动到第一个元素。

【讨论】:

  • @peti,既然是双链表,那么实现 List.listIterator() 方法来双向遍历一个列表也是一个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2017-06-10
  • 1970-01-01
  • 2021-11-18
  • 2011-06-03
  • 2018-03-14
相关资源
最近更新 更多