java为自定义数据结构创建迭代器

时间:2011-05-12 03:56:46

标签: java interface iterator abstract-class

所以这就是我所拥有的:

  • 1个名为Set
  • 的界面
  • 1个实现set
  • 的抽象类
  • 扩展抽象类的2个类,称为ArraySetListSet

所以在Set中,我陈述Iterator <String> iterator();,然后在我的2个非抽象类中,我有嵌套的类,它们被称为ArrayIteratorListIterator,它们实现了迭代器的功能。但编译器抱怨ArraySetListSet必须 实施Set.iterator()。如何使编译器识别出ArrayIteratorListIteratorSet.iterator()的实现?

所以它看起来像

interface Set extends Iterable< String > {  
...  
Iterator< String > iterator(); }  




class ArraySet extends AbstractClass {  
 ...  
    class ArrayIterator implements Iterator< String > { ... }  
 ...  
}  

2 个答案:

答案 0 :(得分:1)

您需要在非抽象类Set.iterator()ArraySet中实施ListSet,即:

ArraySet

Iterator<String> iterator() {
    // do something, probably return ArrayIterator ?
}

ListSet

Iterator<String> iterator() {
    // do something, probably return ListIterator ?
}

另外,我假设ArrayIteratorListIterator都实现了Iterator

答案 1 :(得分:0)

我知道这不是你问题的直接答案。但只是为了知识,您可能想知道什么是内部迭代器以及什么是外部迭代器? 参考:GoF设计模式书

or otherwise have a look at this