Eliminar datos de ArrayList con un bucle For

Tengo un problema extraño. Pensé que esto me costaría unos minutos, pero estoy luchando por unas pocas horas ahora ... Aquí está lo que tengo:

for (int i = 0; i < size; i++){
    if (data.get(i).getCaption().contains("_Hardi")){
        data.remove(i);
    }
}

losdata es elArrayList. En el ArrayList obtuve algunas cadenas (un total de 14 o más), y 9 de ellas obtuvieron el nombre _Hardi en ella.

Y con el código anterior quiero eliminarlos. Si yoreplace data.remove(i); con unSystem.out.println luego imprime algo 9 veces, lo que es bueno, porque _Hardi está en la ArrayList 9 veces.

Pero cuando usodata.remove(i); entonces no elimina los 9, sino solo unos pocos. Hice algunas pruebas y también vi esto:

Cuando cambio el nombre de las cadenas a: Hardi1 Hardi2 Hardi3 Hardi4 Hardi5 Hardi6

Luego elimina solo los números pares (1, 3, 5 y así sucesivamente). Se está saltando 1 todo el tiempo, pero no puede entender por qué.

¿Cómo arreglar esto? O tal vez otra forma de eliminarlos?

Respuestas a la pregunta(14)

Su respuesta a la pregunta