Использование Iterator - java.util.ConcurrentModificationException - PullRequest
0 голосов
/ 12 декабря 2018

Итак, это возвращает мне

java.util.ConcurrentModificationException

и указывает на строку System.out.println

Iterator<Autor> it = autores.iterator(); 
// Declaring a class iterator

public void listarAutores() {

    while (it.hasNext()) {
        String aux = it.next().getNomeCompleto(); 
        // Get string from Class Autor method
        System.out.println(aux);
        // Printing that string
    }
}

Почемуэто происходит и как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Это может произойти, если вы измените коллекцию между двумя вызовами метода.Например:

listarAutores();
autores.add(anotherAuthor);
listarAutores();

Вы должны создавать новый итератор в методе при каждом вызове или, что еще лучше, вообще не использовать итератор:

public void listarAutores() {
    for (Author a : autores) {
        String aux = a.getNomeCompleto(); 
        // Get string from Class Autor method
        System.out.println(aux);
        // Printing that string
    }
}
0 голосов
/ 12 декабря 2018

Переместите Iterator в вызов метода.Вы, вероятно, изменили Set где-то посередине.

...