次の関数では、ローカル変数を宣言しallPeopel
ましたitr
(グローバル変数をオーバーライドしています)。ローカル変数 (以下の Astrix の間) をコメントアウトすると、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;
}
}
}