Java 为什么我';当尝试打印两个ArrayList时,是否出现并发修改异常?
我想使用两个while条件打印两个ArrayList的元素。但我在尝试实现时遇到了并发修改异常 我做错了什么Java 为什么我';当尝试打印两个ArrayList时,是否出现并发修改异常?,java,arraylist,Java,Arraylist,我想使用两个while条件打印两个ArrayList的元素。但我在尝试实现时遇到了并发修改异常 我做错了什么 public void Insert_Answers(Enumeration<String> ques, Enumeration<String> ans){ try { while(ans.hasMoreElements()){ String answer = ans.nextElement();
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);
}
}
public void Insert\u答案(枚举问题、枚举问题){
试一试{
while(ans.hasMoreElements()){
字符串answer=ans.nextElement();
System.out.println(应答);
while(ques.hasMoreElements()){
字符串问题=ques.nextElement();
System.out.println(问题);
}
}
}
捕获(例外情况除外){
Logger.getLogger(DbInsert.class.getName()).log(Level.SEVERE,null,ex);
}
}
这是包含main方法的Test.java类
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);
}
}
公共类测试{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
DbInsert dbIns=new DbInsert();
ArrayList arr1=新的ArrayList();
arr1.添加(“a”);
arr1.添加(“b”);
arr1.添加(“c”);
arr1.添加(“d”);
枚举arr1=集合。枚举(arr1);
ArrayList arr2=新的ArrayList();
arr2.添加(“e”);
arr1.添加(“f”);
arr1.添加(“g”);
arr1.添加(“h”);
枚举2=集合.枚举(arr2);
插入答案(耳环1、耳环2);
}
}
我猜你在填充arr2
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
arr2.add("e");
arr2.add("f");
arr2.add("g");
arr2.add("h");
您可能是想将这些添加到arr2
arr2.add("e");
arr1.add("f");
arr1.add("g");
arr1.add("h");
arr2.add("e");
arr2.add("f");
arr2.add("g");
arr2.add("h");
发生并发修改错误的原因是,您正在迭代过程中添加到支持列表
我也不清楚为什么要使用枚举
。您应该使用迭代器
Iterator<String> arr1Iter = arr1.iterator();
Iterator arr1Iter=arr1.Iterator();
关于为什么应该使用迭代器,请参见另一个SO问题:为什么要使用Java 1.1的样式
枚举
s而不是更现代的迭代器
s(更不用说增强的for
循环了)?枚举不允许修改集合,但您正在尝试更改Arr1原来是这样的:D感谢您指出这一点。我对所有这些都不太熟悉,只是想测试这种方法是否适用于arraylist。将使用迭代器进行实现。再次感谢您的建议:)