【发布时间】:2018-08-12 10:37:31
【问题描述】:
所以我目前正在测试 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);
}
}
}
【问题讨论】:
-
请先搜索再提问,因为这类问题之前已经被问过很多次了。您需要修改列表使用迭代器