gpt4 book ai didi

java - 如何修复 java.util.ConcurrentModificationException?

转载 作者:行者123 更新时间:2023-12-01 18:16:49 27 4
gpt4 key购买 nike

我的代码的目的是让用户输入汽车名称,然后搜索数组列表并找到与用户输入的内容相匹配的对象。每当我运行代码时,都会收到 java.util.ConcurrentModificationException 错误。非常感谢对此错误含义的解释以及修复它的建议:)

public static void arrayList()
{
//Declarations
ArrayList<String> list = new ArrayList<String> ();
ListIterator<String> iterator = list.listIterator();
list.add ("Aston Martin");
list.add ("Ferrari");

Scanner scan = new Scanner(System.in);
String car = new String();
String search = new String();


//Prompts user to enter car name
System.out.println ("Enter car name: ");
car = scan.nextLine();

//Searches array list for car
while (iterator.hasNext())
{
search = iterator.next();
if (search.equalsIgnoreCase (car))
{
System.out.println (search);
}
}
}

最佳答案

相关集合的 Javadocs 和 ConcurrentModificationException很清楚:

This exception may be thrown by methods that have detected concurrent modification of an object when such modification is not permissible.

您开始对 list 进行迭代,但随后对其进行了修改并返回到迭代器。

在即将使用迭代器之前不要打开它。更好的是,由于您不需要访问 remove(),只需使用增强的 for 循环即可:

for(String item: list) {
if(item.equalsIgnoreCase (car)) {
System.out.println(item);
}
}

关于java - 如何修复 java.util.ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29025234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com