Java ArrayList异常

Java ArrayList异常,java,arraylist,Java,Arraylist,因此,我目前正在测试ArrayList,使用下面的代码,我总是在第23行得到一个java.util.ConcurrentModificationException。我阅读了文档,并指出 通常不允许一个线程修改集合 而另一个线程正在对其进行迭代 但是我并不是在迭代的时候修改集合,我是事先做的,所以我不确定我在这里做错了什么 public class Test { public static void main(String[] args) { Scanner scanne

因此,我目前正在测试ArrayList,使用下面的代码,我总是在第23行得到一个
java.util.ConcurrentModificationException
。我阅读了文档,并指出

通常不允许一个线程修改集合 而另一个线程正在对其进行迭代

但是我并不是在迭代的时候修改集合,我是事先做的,所以我不确定我在这里做错了什么

public class Test {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<String> a = new ArrayList<String>();
        ListIterator<String> lt = a.listIterator();
        System.out.print("Enter a word: ");
        String s = scanner.nextLine();

        while (!s.equals("")) {
            a.add(s);
            System.out.print("Enter another word: ");
            s = scanner.nextLine();
        }

        while (lt.hasNext()) {
            String z = lt.next(); // line 23
            System.out.println(z);
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
ArrayList a=新的ArrayList();
ListIterator lt=a.ListIterator();
System.out.print(“输入单词:”);
字符串s=scanner.nextLine();
而(!s.equals(“”){
a、 添加(s);
System.out.print(“输入另一个单词:”);
s=scanner.nextLine();
}
while(lt.hasNext()){
字符串z=lt.next();//第23行
系统输出打印ln(z);
}
}
}

但是,您已经在添加到ArrayList的循环之前创建了迭代器。将迭代器的创建移动到第一个循环之后。

请在询问之前进行搜索,因为此类问题以前已被问过多次。您需要使用iteratorOk修改列表谢谢,这很有效。我想我可以在任何时候创建迭代器,只要我不积极地使用或迭代它。但我错了。