1. Définissez d'abord une interface de collection de conteneur
package com.njupt.zhb.learn.iterator; public interface Collection { void add(Object o); int size(); Iterator iterator(); }
2. Définissez une interface d'itérateur
package com.njupt.zhb.learn.iterator; public interface Iterator { Object next(); boolean hasNext(); }
3. classe interne qui implémente l’interface Iterator.
package com.njupt.zhb.learn.iterator; import com.njupt.zhb.learn.iterator.Collection; public class ArrayList implements Collection { Object[] objects = new Object[10]; int index = 0; public void add(Object o) { if(index == objects.length) { Object[] newObjects = new Object[objects.length * 2]; System.arraycopy(objects, 0, newObjects, 0, objects.length); objects = newObjects; } objects[index] = o; index ++; } public int size() { return index; } public Iterator iterator() { return new ArrayListIterator(); } private class ArrayListIterator implements Iterator { private int currentIndex = 0; @Override public boolean hasNext() { if(currentIndex >= index) return false; else return true; } @Override public Object next() { Object o = objects[currentIndex]; currentIndex ++; return o; } } }
4. Écrivez le programme de test TestMain
package com.njupt.zhb.learn.iterator; import com.njupt.zhb.learn.iterator.ArrayList; public class TestMain { public static void main(String[] args) { Collection c = new ArrayList(); for(int i=0; i<15; i++) { c.add("string "+i); } System.out.println(c.size()); Iterator it = c.iterator(); while(it.hasNext()) { Object o = it.next(); System.out.println(o.toString() + " "); } } }
Résultat de l'exécution :
15 string 0 string 1 string 2 string 3 string 4 string 5 string 6 string 7 string 8 string 9 string 10 string 11 string 12 string 13 string 14
Comme le montre ce qui précède, les modèles de conception sont utilisés partout. en orienté objet du polymorphisme. L'interface appelle des fonctions dans des sous-classes.
Pour plus d'articles liés à l'introduction du modèle Iterator dans les modèles de conception Java, veuillez faire attention au site Web PHP chinois !