2011-05-12 3 views
1

Alors, voici ce que j'ai:java créer un itérateur pour une structure de données personnalisées

  • 1 interface appelée Set
  • 1 classe abstraite qui implémente mis
  • 2 classes qui étendent la classe abstraite, appelée ArraySet et ListSet

Ainsi, dans Set, je déclare Iterator <String> iterator(); puis dans mes 2 classes nonabstract, j'ai des classes imbriquées qui sont appelées ArrayIterator et ListIterator, qui implémentent la fonctionnalité de l'itérateur. Mais le compilateur se plaint que ArraySet et ListSet doivent mettre en œuvre Set.iterator(). Comment faire pour que le compilateur reconnaisse que ArrayIterator et ListIterator sont les implémentations de Set.iterator()?

il ressemble

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




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

Pouvez-vous afficher les définitions? – Kal

+0

Vous souvenez-vous d'inclure une méthode appelée 'iterator' qui renvoyait une instance de l'itérateur approprié? –

+0

Qu'entendez-vous par «classes imbriquées»? – ryanprayogo

Répondre

1

Vous devez implémenter Set.iterator() dans vos classes non abstraites ArraySet et ListSet, à savoir:

En ArraySet:

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

En ListSet:

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

En outre, je suppose que les deux ArrayIterator et ListIterator implémente Iterator

+0

ok. Avant d'essayer de définir itérateur() dans les classes imbriquées ArrayIterator et ListIterator, je l'ai défini à l'extérieur et cela semble fonctionner. merci –

+0

Pas de problème. C'est à la fois 'ArraySet' et' ListSet' qui doit implémenter 'iterator()', pas 'ArrayIterator' ni' ListIterator'. D'un côté, si vous trouvez que cela fonctionne, vous devriez accepter la solution – ryanprayogo

0

Je sais que ce n'est pas une réponse directe à votre question. Mais juste pour la connaissance, vous voudrez peut-être savoir ce qu'est un itérateur interne et qu'est-ce qu'un itérateur externe? Ref: livre de conception de modèle par GoF

or otherwise have a look at this

Questions connexes