集合与其迭代器之间是否存在循环依赖关系?

时间:2013-03-12 19:05:08

标签: java language-agnostic iterator design-patterns

迭代器必须知道它必须迭代的集合集合还必须了解其迭代器吗?依赖是单向还是双向?如果集合具有关于特定迭代器实现的知识,则可能无法为同一集合使用不同的迭代器策略。这是我的想法。我是对的还是我完全错了?

GoF书中有 Iterator模式的图表:

enter image description here

我认为这意味着循环依赖。我不确定从ListLisIteratorSkipListSkipListIterator的虚线。

P.S:我每天都在处理Java,但可能更多的是设计问题,而不是特定于某种语言。

2 个答案:

答案 0 :(得分:2)

除了一些专门的实现之外,集合不需要知道迭代器。

这种情况下的虚线表示实例化。如果您有4本书的帮派,则说明见第15页第1.6节。

具体来说,迭代器是由Java iterator()中的CreateIterator方法创建的。

极客幽默:告诉别人你的泽西海岸名字是“即时”

答案 1 :(得分:1)

不,它不是必需的循环。通过以下事实可以清楚地表明,您可以随时为给定的数据结构实现新的迭代器。

例如,如果您需要一个迭代器,它首先按升序生成ArrayList的偶数元素,然后按降序生成奇数编号的项目,那么没有任何东西可以阻止您编写那些东西。