LinkedList java - usuwanie obiektow

0

Witam,
Mam nastepujacy problem: Mam liste sedziow. Dodaje sobie sedziow na nia, oraz usuwam i po paru takich usunięciach wywala mi error ;/
Exception in thread "main" java.util.ConcurrentModificationException
Czytalem troche to chodzi chyba o hasNext(), ale nie bardzo rozumiem dalej w czym tkwi problem ;/

for(Sedzia x : Kopakabana.getListaSedziow()){
                                    if(x.Imie.equals(imie)){
                                        if(x.Nazwisko.equals(nazwisko)){
                                            Kopakabana.removeSedzia(x);
                                        }
                                    }
                                }

@Edit
Mam sobie w obiekcie Kopakabana tą listę sędziów. I teraz moja pętla, jak rozumiem: Przechodzi po wszystkich elementach, jeżeli natrafi na takie same imie sędziego i nazwisko, którego chcę usunąć to wywołuje funkcję removeSedzia z obiektu Kopakabana z parametrem ktorym jest sędzia. A ta funkcja w obiekcie kopakabana wygląda tak:

public void removeSedzia(Sedzia s){
        Lista_sedziow.remove(s);
    }

No i chodzi o to, że po paru taki "modyfikacjach" typu dodawanie, usuwanie sędziów program mi wywala właśnie ten błąd ;/ (Przy usuwaniu).

1

musisz użyć Iteratora:

for (Iterator<Sedzia> iterator = Kopakabana.getListaSedziow().iterator(); iter.hasNext(); ) {
    Sedzia sedzia= iterator.next();
    if(x.Imie.equals(imie) && x.Nazwisko.equals(nazwisko)){
        iterator.remove();
    }
}

ps. konwencje nazewnicze:
Imie, Nazwisko - pola z piszemy z małej.
i ew enkapsulacja.

1

Nie możesz usuwać dodawać elementów podczas interacji pętli foreach przecież ona sobie leci przez całą liste, a ty usuwasz z niej elementy w trakcie jej iterowania. Ona dostaje listę na wyłączność czyli nie możesz użyć opcji zapisu do listy.
Musisz użyć iteratora, który od pętli foreach różni się tym, że może usuwać dane w locie

Iterator<Sedzia> it = Kopakabana.getListaSedziow().iterator();
while(it.hasNext()){
Sedzia x = it.next();
   if(x.Imie.equals(imie))
                                        if(x.Nazwisko.equals(nazwisko))
                                             it.remove();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1