我的代码的目的是让用户输入汽车名称,然后搜索数组列表并找到与用户输入的内容相匹配的对象。每当我运行代码时,都会收到 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/