我正在尝试使用迭代器迭代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方法之外,该迭代器都将抛出。