【问题标题】:ArrayList Exception [duplicate]ArrayList 异常 [重复]
【发布时间】: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);
        }
    }
}

【问题讨论】:

  • 请先搜索再提问,因为这类问题之前已经被问过很多次了。您需要修改列表使用迭代器

标签: java arraylist


【解决方案1】:

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

【讨论】:

  • 好的,谢谢,这行得通。我想我可以随时创建迭代器,只要我不主动使用或迭代它。但我错了。
猜你喜欢
  • 1970-01-01
  • 2021-03-28
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2016-05-03
相关资源
最近更新 更多