Удаление данных из ArrayList с помощью цикла For

У меня возникла странная проблема. Я думал, что это будет стоить мне нескольких минут, но я борюсь уже несколько часов... Вот что я получил:

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

Данные — это ArrayList. В ArrayList я получил несколько строк (всего 14 или около того), и 9 из них получили имя _Hardi.

И с помощью приведенного выше кода я хочу их удалить. Если я заменю data.remove(i);на System.out.println, то он напечатает что-то 9 раз, что хорошо, потому что _Hardi находится в ArrayList 9 раз.

Но когда я использую data.remove(i);, удаляются не все 9, а только некоторые. Я провел несколько тестов и также увидел это:

Когда я переименовываю строки в: Харди1 Харди2 Харди3 Харди4 Харди5 Hardi6

Затем удаляются только четные числа (1, 3, 5 и т. д.). Он все время пропускает 1, но не может понять, почему.

Как это исправить? Или может есть другой способ их убрать?

19
задан ROMANIA_engineer 13 December 2017 в 20:37
поделиться