【发布时间】:2013-09-24 22:48:17
【问题描述】:
Iterator保证有以下方法:
- hasNext()
- 下一个()
- 删除(可选)
当for-each 循环遍历iterable 类对象时,它如何知道从哪个对象开始?上述方法提供了清晰的前进路径,但什么指向起始元素?
For-each 保证遍历所有相关对象。根据一个类及其next() 实现,从哪里开始可能非常重要(考虑forward linked list 或任何其他具有root 元素的实现)。
它是如何工作的?
如果我的问题没有意义,请解释原因。
【问题讨论】:
-
它使用
next()在第一次迭代中返回的任何内容... -
你从容器中获取的迭代器被初始化为start。
-
您可以定义在
Iterator实现中的起点。例如,对于Lists,您有一个从第一个元素到最后一个元素的 直接 迭代器,以及一个从最后一个元素到第一个元素的反向迭代器。 -
@LuiggiMendoza - 我的自己的自定义迭代器怎么样?起点逻辑到底应该在哪里实现?就像在 another question 中一样,你在帮助我。
-
在这种情况下,您的迭代器将从您可以访问的第一个
Thing开始。然后,这取决于您希望如何浏览该树。如 cmets 中所述,您可以实现前缀、中缀或后缀遍历。