La version courte de la boucle for ( T
représente mon type personnalisé):
for (T var : coll) {
//body of the loop
}
se traduit par:
for (Iterator<T> iter = coll.iterator(); iter.hasNext(); ) {
T var = iter.next();
//body of the loop
}
et l'itérateur de ma collection pourrait ressembler à ceci:
class MyCollection<T> implements Iterator<T> {
public int size() { /*... */ }
public T get(int i) { /*... */ }
public Iterator<T> iterator() {
return new MyIterator();
}
class MyIterator implements Iterator<T> {
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");
}
}
}