所以我现在正在测试ArrayList并使用下面的代码,我总是在第23行获得java.util.ConcurrentModificationException
。我阅读了文档并说明了
一个线程通常不允许修改Collection 而另一个线程正在迭代它
但我在迭代时不修改集合,我事先做了,所以我不知道我在这里做错了什么。
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);
}
}
}
答案 0 :(得分:2)
但是,您已经在添加到ArrayList的循环之前创建了迭代器。将迭代器的创建移动到第一个循环之后。