Domanda

In C + si può usare iteratori per la scrittura di una sequenza. Più semplice esempio potrebbe essere:

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

ho bisogno di qualcosa di più complicato - mantenere iteratore come un membro della classe per un uso successivo. Ma io non so come ottenere questo comportamento da iteratori Java.

sono lì iteratori scrivibili in Java a tutti?
Se poi non ciò che li sostituisce?

È stato utile?

Soluzione

Il ListIterator (che si può ottenere da List#listIterator() ) ha add() e set() metodi che permette di inserire, rispettivamente, e sostituire l'elemento in corrispondenza dell'indice attualmente iterato. Questo è quanto l'unico "iteratore scrivibile", come mi viene in mente in Java.

Non sono sicuro però se questo è il rimontaggio esatto di un dato codice C ++ in quanto non so C ++.

Altri suggerimenti

Come gli array è possibile accedere direttamente e velocemente con il loro indice, non si ha realmente bisogno di un oggetto iteratore. Non sarebbe sufficienti per salvare l'indice della matrice in quanto membro della classe? Ciò consentirebbe di leggere e scrivere il valore della matrice.

PS: È possibile usare un ArrayList, che è una serie crescente automaticamente di array e utilizzando ListIterator come Balus descritto per utilizzare l'iteratore-oggetto-approccio.

appare più come si desidera un List (o forse qualche altra collezione, come Set) o un array.

Inoltre, si può solo rendere i vostri contenuti mutevole. Sembra sciocco per gli interi, ma continuando il tuo esempio

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top