Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/01/2012, 12:44
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: funcion remove ArrayList

Pues el error que cometes está claro.
Te lo explico. Supongamos que tienes la lista:

Código Java:
Ver original
  1. List<String> listaNombres = new ArrayList<String>();
  2. listaNombres.add("Pepe");
  3. listaNombres.add("Pepe");
  4. listaNombres.add("Juan");
  5. listaNombres.add("Pepe");
  6. listaNombres.add("Pepe");
  7. listaNombres.add("Roberto");

Para la primera iteración de tu bucle, i vale 0. Se cumple la condicional, y procedes a remover al Pepe que está en el índice 0 de la lista. Como ya no está el Pepe del índice cero, entonces el Pepe que estaba en el índice 1 pasó a estar en el índice 0. De la misma manera, Juan estaba en el índice 2, pero ahora estará en el índice 1, y así sucesivamente con los demás integrantes de la lista.
Ahora para la segunda iteración de tu bucle, i vale 1. ¡Hey, pero hay un Pepe en la posición cero! Para tu mala suerte, el bucle ya pasó el índice cero. ¿Qué hacer? Pues sencillo, cada vez que elimines un elemento de tu lista haz que tu algoritmo mantenga el valor de i.


Código Java:
Ver original
  1. for (int i=0;i<listaNombres.size();i++){
  2.     if (listaNombres.get(i).equals("Pepe")){
  3.         listaNombres.remove(i);
  4.         i--;
  5.     }
  6. }