En un juego que tengo una lista de jugadores, digamos así:¿Clonar un iterador en Java?
LinkedList<String> players = new LinkedList<String>();
Quiero que cada jugador interactuar con cada uno de los otros jugadores, por lo que escribo dos bucles anidados:
Iterator<String> i1 = players.iterator();
while (i1.hasNext()) {
String p1 = i1.next();
Iterator<String> i2 = players.iterator();
// But I want to do this: Iterator<String> i2 = i1.clone();
while (i2.hasNext()) {
String p2 = i2.next();
System.out.println("Interact: " + p1 + ", " + p2);
}
}
Como solo quiero que cada par de jugadores interactúen una vez, quiero comenzar el bucle interno con el jugador después del jugador actual del bucle externo. Así que quiero clonar el iterador, pero eso no se compila.
Entonces, ¿qué debo hacer?
¿Por qué no usar simplemente 'ArrayList' en su lugar? Un algoritmo que use posiciones sería trivial con esa estructura de datos. –
¿No resultaría esto emparejar al jugador A con A? –
@Kirk: Sí, una ArrayList funcionaría, pero como tendré que insertar y eliminar jugadores en el medio de la lista, quiero una LinkedList. –