2011-05-12 40 views
1

創建一個迭代器是我所:Java進行自定義的數據結構

稱爲集
  • 1接口
  • 1,它實現了集
  • 2班,擴展了抽象類抽象類,稱爲ArraySetListSet

所以在設置,我州Iterator <String> iterator();,然後在我的2類非抽象的,我有嵌套被稱爲班和ListIterator,它們實現了迭代器的功能。但編譯器抱怨ArraySetListSet必須 實現Set.iterator()。我該怎麼做才能讓編譯器識別出ArrayIteratorListIteratorSet.iterator()的實現?

所以看起來

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




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

你能後的定義是什麼? – Kal 2011-05-12 04:00:47

+0

您是否記得包含一個名爲'iterator'的方法,該方法返回了相應迭代器的實例? – 2011-05-12 04:12:44

+0

「嵌套類」是什麼意思? – ryanprayogo 2011-05-12 04:12:54

回答

1

您需要實現在非抽象類ArraySetSet.iterator()ListSet,即:

ArraySet

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

ListSet

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

另外,我假定這兩個ArrayIteratorListIterator實現Iterator

+0

好的。在我試圖在嵌套類ArrayIterator和ListIterator中定義iterator()之前,我在外面定義了它,它似乎工作。謝謝 – 2011-05-12 04:17:45

+0

沒問題。它既是ArraySet又是ListSet,它需要實現'iterator()',而不是'ArrayIterator'和'ListIterator'。在附註中,如果你發現它的工作,你應該接受解決方案 – ryanprayogo 2011-05-12 04:20:41

0

我知道這是不是直接回答你的問題。但爲了知識的緣故,您可能想知道什麼是內部迭代器,什麼是外部迭代器? 參考:由GoF的

設計模式書

or otherwise have a look at this