为什么在尝试打印两个数组列表时出现并发修改异常?
Why I'm getting concurrent modification exception when trying to print two arraylists?
我想使用两个 while 条件打印两个数组列表的元素。但是我在尝试实现它时遇到并发修改异常。
我做错了什么?
public void Insert_Answers(Enumeration<String> ques, Enumeration<String> ans){
try {
while(ans.hasMoreElements()){
String answer = ans.nextElement();
System.out.println(answer);
while(ques.hasMoreElements()){
String question = ques.nextElement();
System.out.println(question);
}
}
}
catch (Exception ex) {
Logger.getLogger(DbInsert.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是Test.javaclass主要方法所在
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DbInsert dbIns = new DbInsert();
ArrayList<String> arr1 = new ArrayList<String>();
arr1.add("a");
arr1.add("b");
arr1.add("c");
arr1.add("d");
Enumeration earr1 = Collections.enumeration(arr1);
ArrayList<String> arr2 = new ArrayList<String>();
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
Enumeration earr2 = Collections.enumeration(arr2);
dbIns.Insert_Answers(earr1, earr2);
}
}
我猜你在填充时打错了 arr2
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
你可能是说那些添加到 arr2
arr2.add("e");
arr2.add("f");
arr2.add("g");
arr2.add("h");
发生并发修改错误是因为您在迭代过程中添加到支持列表。
我也不确定你为什么要使用 Enumeration
。您应该改用 Iterator
。
Iterator<String> arr1Iter = arr1.iterator();
请参阅另一个 SO 问题,了解为什么应该改用迭代器:Difference between Java Enumeration and Iterator
我想使用两个 while 条件打印两个数组列表的元素。但是我在尝试实现它时遇到并发修改异常。
我做错了什么?
public void Insert_Answers(Enumeration<String> ques, Enumeration<String> ans){
try {
while(ans.hasMoreElements()){
String answer = ans.nextElement();
System.out.println(answer);
while(ques.hasMoreElements()){
String question = ques.nextElement();
System.out.println(question);
}
}
}
catch (Exception ex) {
Logger.getLogger(DbInsert.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是Test.javaclass主要方法所在
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DbInsert dbIns = new DbInsert();
ArrayList<String> arr1 = new ArrayList<String>();
arr1.add("a");
arr1.add("b");
arr1.add("c");
arr1.add("d");
Enumeration earr1 = Collections.enumeration(arr1);
ArrayList<String> arr2 = new ArrayList<String>();
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
Enumeration earr2 = Collections.enumeration(arr2);
dbIns.Insert_Answers(earr1, earr2);
}
}
我猜你在填充时打错了 arr2
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
你可能是说那些添加到 arr2
arr2.add("e");
arr2.add("f");
arr2.add("g");
arr2.add("h");
发生并发修改错误是因为您在迭代过程中添加到支持列表。
我也不确定你为什么要使用 Enumeration
。您应该改用 Iterator
。
Iterator<String> arr1Iter = arr1.iterator();
请参阅另一个 SO 问题,了解为什么应该改用迭代器:Difference between Java Enumeration and Iterator