java - ListIterator 抛出 "Exception in thread "main“java.util.ConcurrentModificationException”Java

标签 java exception arraylist do-while

我在网上搜索了一下,但要么解释超出了我的理解范围,要么人们实际上建议使用 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(); 轻松输出 ArrayList 。当我使用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)

任何帮助将不胜感激:)

最佳答案

问题在于迭代器是在调用 getInput() 之前创建的。

这里迭代器是从空列表创建的。禁止在迭代(搜索快速失败迭代器)时对集合进行结构修改(添加或删除元素)。

解决方案 - 将迭代器创建移至pellOutput()。

关于java - ListIterator 抛出 "Exception in thread "main“java.util.ConcurrentModificationException”Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60116536/

相关文章:

java - Spring MVC Controller 的误解

c# - .NET抛出WebException ((400) Bad Request)时如何处理WebResponse?

java - 使用 arrayList 中的两个键进行搜索

java - .Net 相当于 Java 的 AssertionError

java - 如何将 ArrayList<String[]> 转换为多维数组 String[][]?

java - Android 中指向相同对象或数据的 ArrayList

java - 傅立叶变换得到大约一半错误输出

java - 自定义 3D 图形引擎...在哪里绘制 Z 坐标

java - 两个@RequestMapping注解的区别

c# - HttpWebRequest.GetResponse 中的 System.AccessViolationException