Pregunta

En C + Uno puede usar iteradores para escribir en una secuencia. ejemplo más simple sería:

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

Necesito algo más complicado - mantener iterador como un miembro de la clase para un uso posterior. Pero no sé cómo conseguir este comportamiento de los iteradores Java.

¿Hay iteradores de escritura en Java en absoluto?
Si no, entonces lo que los reemplaza?

¿Fue útil?

Solución

El ListIterator (que se puede obtener por List#listIterator() ) tiene add() y set() métodos lo que le permite insertar y reemplazar el elemento en el índice Actualmente iterado respectivamente. Eso es lo más lejos el único "iterador se puede escribir", como se me ocurre en Java.

No estoy seguro de que si ese es el reemplazo exacto del código C ++ dado desde no sé C ++.

Otros consejos

A medida que las matrices se puede acceder directa y rápidamente por su índice, que realmente no necesita un objeto iterador. No sería suficiente como para guardar el índice de la matriz en la que miembros de la clase? Esto permitiría a leer y escribir el valor de la matriz.

PS: Se podría utilizar un ArrayList, que es un conjunto de forma automática cada vez mayor de matrices y utilizar el ListIterator como Balus descrito con el fin de utilizar el objeto-iterador-enfoque.

se parece más a que quieren un List (o tal vez alguna otra colección, como Set) o una matriz.

Además, se podría simplemente hacer que sus contenidos mutable. Parece tonto para enteros, pero continuando su ejemplo

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top