스레드 "main"의 예외 java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at wan.ForEach.main(ForEach.java:22)
위에서 말한 내용은 매우 공식적입니다. for(Object obj:list)의 메서드는 요소를 삭제하기 위해 목록의 제거 메서드를 호출할 수 없습니다. 그렇지 않으면 Iterator 구조를 결정해야 하기 때문에 예외가 발생합니다. 삭제하는 방법에는 두 가지가 있습니다. 하나는 목록을 복사하고 새 목록을 반복하여 이전 목록의 요소를 제거하는 것이고, 다른 하나는 for(int i; i
foreach
是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove
요소 삭제 방법.위에서도 분명히 밝혔는데, 여기서는 간단한 해결 방법 2가지를 알려드리겠습니다
1. Iterator 삭제
2. 목록을 복사하여 순회한 다음 원본 목록을 조작합니다.
물론 Iterator 삭제를 권장합니다
위에서 말한 내용은 매우 공식적입니다. for(Object obj:list)의 메서드는 요소를 삭제하기 위해 목록의 제거 메서드를 호출할 수 없습니다. 그렇지 않으면 Iterator 구조를 결정해야 하기 때문에 예외가 발생합니다. 삭제하는 방법에는 두 가지가 있습니다. 하나는 목록을 복사하고 새 목록을 반복하여 이전 목록의 요소를 제거하는 것이고, 다른 하나는 for(int i; i
계란을 셀 때, 누군가 몰래 바구니에 계란을 넣거나 가져가면, 직접 계란을 가져가거나 가져가지 않는 이상 잘못된 계산을 하게 되는 경우도 있습니다.
프로그램에서