我正在尝试使用迭代器迭代ArrayList。问题是我得到了ConcurrentModificationException。我已经检查了很多这样的问题。所有人都说,在遍历ArrayList时修改它会发生该异常。但是我认为我的问题有所不同,因为即使使用ArrayList方法,我也没有修改Iterator

        Cliente cliente1 = new Cliente(16096,"Alberto1","pass",1500.0,false);

    ArrayList<Cliente> miLista = new ArrayList<Cliente>();

    Iterator<Cliente> miIterador = miLista.iterator();

    miLista.add(cliente1);

    System.out.println(miLista.get(0).nombre); //This displays "Alberto1"
    System.out.println(miIterador.hasNext()); //This displays 'true'
    miIterador.next(); //Here I get the exception


我不知道该怎么解决。这可能是一个愚蠢的问题,因为实际上我是初学者,但我被卡在这里。

谢谢。

-甚至无法回答我自己的问题,所以我用答案编辑问题:

非常感谢大家!你们都给我正确的答案:D抱歉,愚蠢的问题:P

解决了

最佳答案

这是罪魁祸首。除了通过迭代器自己的remove或add方法之外,以任何方式在其上获得迭代器后都无法修改列表。

miLista.add(cliente1);



ArrayList类的iterator和listIterator方法返回的迭代器是快速失败的:如果在创建迭代器之后的任何时间对列表进行结构修改,则除了通过迭代器自己的remove或add方法之外,该迭代器都将抛出。

10-04 11:43