在Java中实现双向链表中的Iterable

时间:2011-01-27 21:03:28

标签: java iterator linked-list

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

此列表包含ListNode接下来的ListNode,ListNode prev和T inf字段。 (所以这里非常简单/经典)

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

这是我不理解的部分。 iterator()方法有什么作用?我该怎么写呢?

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

1 个答案:

答案 0 :(得分:1)

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

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