Excluir dados de ArrayList com um loop For

Eu tenho um problema estranho. Eu pensei que isso me custaria alguns minutos, mas eu estou lutando por algumas horas agora ... Aqui está o que eu tenho:

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

odata é oArrayList. Na ArrayList eu tenho algumas strings (total de 14 ou mais), e 9 delas, tem o nome _Hardi nela.

E com o código acima eu quero removê-los. Se eureplace data.remove(i); com umSystem.out.println então ele imprime algo 9 vezes, o que é bom, porque _Hardi está na ArrayList 9 vezes.

Mas quando eu usodata.remove(i); então não remove todos os 9, mas apenas alguns. Eu fiz alguns testes e também vi isso:

Quando eu renomeio as cordas para: Hardi1 Hardi2 Hardi3 Hardi4 Hardi5 Hardi6

Em seguida, ele remove apenas os números pares (1, 3, 5 e assim por diante). Ele está pulando 1 o tempo todo, mas não consegue descobrir por quê.

Como consertar isto? Ou talvez outra maneira de removê-los?

questionAnswers(14)

yourAnswerToTheQuestion