java - ListIterator 在线程“主”java.util.ConcurrentModificationException 中抛出“异常”Java
问题描述
我在网上搜索了一下,但要么解释太过分了,要么人们实际上建议使用 ArrayList 来避免异常。所以我现在有点无助。这是我的代码:
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Scanner;
public class ArrayIterator {
static Scanner scan = new Scanner(System.in);
static ArrayList<String> simpleList = new ArrayList<>();
static ListIterator<String> simpleIterator = simpleList.listIterator(0);
static int b = 5;
public static void main(String[] args) {
getInput();
spellOutput();
}
private static void getInput(){
System.out.println("What do you want to add to your list? You can name five items");
for (int i = 0; i < b; i++) {
String m = scan.nextLine();
simpleList.add(m);
}
}
private static void spellOutput(){
System.out.println("Here are the items from your list: ");
do{
System.out.println(simpleIterator.next());
}while(simpleIterator.hasNext());
}
}
该方法似乎一切正常getInput
,我可以通过System.out.println();
. 但是,当我使用该spellOut
方法时,事情会向南,我得到以下异常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1009)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:963)
at ArrayIterator.spellOutput(ArrayIterator.java:28)
at ArrayIterator.main(ArrayIterator.java:15)
任何帮助将不胜感激 :)
解决方案
- 您创建了迭代器。
- 您修改了列表。
- 您使用了迭代器。
这就是引发并发异常的原因。为避免引发异常,您应该仅使用迭代器将项目添加到列表中:
simpleIterator.add(m)
推荐阅读
- masm - MASM x86 中的 IF 和 ELSE IF 语句
- reactjs - npm install -g create-react-app 给出错误
- r - 用 R 中的字符更新数字列
- java - 如何使用 MyBatis 代替 Spring DataSource?
- vue.js - 带有:filter-included-fields 的 Bootstrap-vue 表不起作用
- python - 两个小正数的乘法结果如何等于0(python)?
- c++ - 为以下代码创建了多少个虚拟表?
- reactjs - react 如何知道哪些参数必须传递给 onChange?
- gem5 - 构建 gem5 和 nvmain 时的 ModuleNotFoundError AbstractMemory
- php - 没有为 SQL 注入故意清理