在下面的函数中,我声明了局部变量allPeopel
和itr
(它们是覆盖全局变量)。如果我注释掉局部变量(在下面的 Astrixes 之间),则会引发 ConcurrentModificationError。但是,如果我使用局部变量而不是全局变量,那么代码可以正常工作。我不明白为什么会这样?类中还有许多其他函数,因此我尝试使用全局变量来获得更高效的代码。
public void removeAPerson(){
int id;
Scanner sc = new Scanner(System.in);
System.out.print("Enter ID of person to delete > ");
id = sc.nextInt();
sc.nextLine();
System.out.println();
/*************************************/
ArrayList<Person> allPeople;
allPeople = Person.getAllPeople();
Iterator itr = allPeople.iterator();
/*************************************/
while(itr.hasNext()){
Person obj = (Person) itr.next();
int ID = obj.getID2();
if(ID == id){
itr.remove();
break;
}
}
}