我已经构建了一个DoublyLinkedList,它包含所有常规方法(add(),remove(),isEmpty(),size()等等。)
此列表包含ListNode接下来的ListNode,ListNode prev和T inf字段。 (所以这里非常简单/经典)
我的问题是,如何让我的DLL可迭代。 根据我收集的内容,我需要实现Iterable接口,并定义一个返回Iterator的iterator()方法。
这是我不理解的部分。 iterator()方法有什么作用?我该怎么写呢?
任何指针都表示赞赏。 提前致谢 PS:我知道我应该使用java软件包中已有的容器,但在这种情况下我需要自己做。
答案 0 :(得分:1)
iterator()
方法将返回额外类的实例。这将跟踪迭代器所在的节点,并允许您检查是否存在更多节点(通过hasNext()
)并移至下一个节点(通过next()
)。
此具有作为列表本身的单独对象,因为可以有多个迭代器同时遍历同一个集合。这是一个额外的状态,基本上:你在哪里。不要忘记迭代器在第一个元素之前从开始,逻辑上 - 第一次调用next()
移动到第一个元素。