Löschen Sie Daten aus ArrayList mit einer For-Schleife

Ich habe ein komisches Problem. Ich dachte, das würde mich ein paar Minuten kosten, aber ich habe jetzt ein paar Stunden zu kämpfen ... Folgendes habe ich:

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

Dasdata ist derArrayList. In der ArrayList habe ich einige Strings (insgesamt 14 oder so) und 9 von ihnen haben den Namen _Hardi darin.

Und mit dem obigen Code möchte ich sie entfernen. Wenn ichreplace data.remove(i); mit einerSystem.out.println dann gibt es 9 mal etwas aus, was gut ist, weil _Hardi 9 mal in der ArrayList ist.

Aber wenn ich benutzedata.remove(i); dann werden nicht alle 9 entfernt, sondern nur einige. Ich habe einige Tests gemacht und auch folgendes gesehen:

Wenn ich die Saiten umbenenne in: Hardi1 Hardi2 Hardi3 Hardi4 Hardi5 Hardi6

Dann werden nur die geraden Zahlen (1, 3, 5 usw.) entfernt. Er überspringt die ganze Zeit 1, kann aber nicht herausfinden warum.

Wie kann ich das beheben? Oder vielleicht eine andere Möglichkeit, sie zu entfernen?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage