Comment puis-je utiliser le java pour chaque boucle avec des classes personnalisées?

Je pense que la plupart des codeurs ont utilisé le code suivant:

ArrayList mySsortingngList = getSsortingngList(); for(Ssortingng str : mySsortingngList) { doSomethingWith(str); } 

Comment puis-je profiter du pour chaque boucle avec mes propres classes? Y a-t-il une interface que je devrais implémenter?

Vous pouvez implémenter Iterable .

Voici un exemple . Ce n’est pas le meilleur, car l’object est son propre iterator. Cependant, cela devrait vous donner une idée de ce qui se passe.

Vous devez implémenter l’ interface Iterable, c’est-à-dire que vous devez implémenter la méthode

 class MyClass implements Iterable { Iterator iterator() { return ...;//an iterator over your data } } 

La version courte de for loop ( T représente mon type personnalisé):

 for (T var : coll) { //body of the loop } 

est traduit en:

 for (Iterator iter = coll.iterator(); iter.hasNext(); ) { T var = iter.next(); //body of the loop } 

et l’iterator de ma collection pourrait ressembler à ceci:

 class MyCollection implements Iterable { public int size() { /*... */ } public T get(int i) { /*... */ } public Iterator iterator() { return new MyIterator(); } class MyIterator implements Iterator { private int index = 0; public boolean hasNext() { return index < size(); } public type next() { return get(index++); } public void remove() { throw new UnsupportedOperationException("not supported yet"); } } }