Y at-il un iterator inscriptible en Java?
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?
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);