Java Language Créer votre propre Iterable.


Exemple

Pour créer votre propre Iterable comme avec n'importe quelle interface, il vous suffit d'implémenter les méthodes abstraites dans l'interface. Pour Iterable il n'y en a qu'un qui s'appelle iterator() . Mais son type de retour Iterator est lui-même une interface avec trois méthodes abstraites. Vous pouvez retourner un itérateur associé à une collection ou créer votre propre implémentation personnalisée:

public static class Alphabet implements Iterable<Character> {

    @Override
    public Iterator<Character> iterator() {
        return new Iterator<Character>() {
            char letter = 'a';

            @Override
            public boolean hasNext() {
                return letter <= 'z';
            }

            @Override
            public Character next() {
                return letter++;
            }

            @Override
            public void remove() {
                throw new UnsupportedOperationException("Doesn't make sense to remove a letter");
            }
        };
    }
}

Utiliser:

public static void main(String[] args) {
    for(char c : new Alphabet()) {
        System.out.println("c = " + c);
    }
}

Le nouvel Iterator doit être associé à un état indiquant le premier élément, chaque appel à la prochaine actualisant son état pour indiquer le suivant. Le hasNext() vérifie si l'itérateur est à la fin. Si l'itérateur était connecté à une collection modifiable, la méthode facultative remove() l'itérateur pourrait être implémentée pour supprimer l'élément actuellement pointé de la collection sous-jacente.