Question

C +, on peut utiliser des itérateurs pour l'écriture d'une séquence. Exemple serait plus simple:

vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
    *it = 42;
}

Je besoin de quelque chose plus compliqué - garder iterator en tant que membre de la classe pour une utilisation ultérieure. Mais je ne sais pas comment ce comportement de Java itérateurs.

Y at-il itérateurs inscriptibles en Java du tout?
Sinon, ce qui les remplace?

Était-ce utile?

La solution

Le ListIterator (que vous pouvez obtenir par List#listIterator() ) a add() et set() méthodes qui vous permet d'insérer respectivement, et remplacer l'élément à l'index actuellement itéré. C'est aussi loin le seul « inscriptible iterator » que je peux penser en Java.

Je ne sais pas si si tel est le remplacement exact du code C ++ donné que je ne sais pas C ++.

Autres conseils

Comme les tableaux sont accessibles directement et rapidement par leur index, vous ne avez pas vraiment besoin d'un objet iterator. Ne serait-il pas enought pour sauver l'index du tableau dans ce membre de la classe? Cela permettrait de lire et d'écrire la valeur du tableau.

PS: Vous pouvez utiliser un ArrayList, qui est un ensemble de plus en plus automatiquement des tableaux et utiliser le ListIterator comme décrit Balus afin d'utiliser la méthode iterator-objet.

ressemble plus à vous voulez un List (ou peut-être une autre collection, comme Set) ou un tableau.

En outre, vous pouvez simplement rendre votre contenu mutable. Il semble stupide pour les entiers, mais en continuant votre exemple

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top