>  Q&A  >  본문

java - foreach의 마지막 요소를 제거하면 오류가 보고되는 이유는 무엇입니까?

으아악

스레드 "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)

PHP中文网PHP中文网2736일 전881

모든 응답(5)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-05-17 10:06:40

    foreach是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove요소 삭제 방법.

    회신하다
    0
  • 迷茫

    迷茫2017-05-17 10:06:40

    http://tyrion.iteye.com/blog/...

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-05-17 10:06:40

    위에서도 분명히 밝혔는데, 여기서는 간단한 해결 방법 2가지를 알려드리겠습니다
    1. Iterator 삭제
    2. 목록을 복사하여 순회한 다음 원본 목록을 조작합니다.
    물론 Iterator 삭제를 권장합니다

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-05-17 10:06:40

    위에서 말한 내용은 매우 공식적입니다. for(Object obj:list)의 메서드는 요소를 삭제하기 위해 목록의 제거 메서드를 호출할 수 없습니다. 그렇지 않으면 Iterator 구조를 결정해야 하기 때문에 예외가 발생합니다. 삭제하는 방법에는 두 가지가 있습니다. 하나는 목록을 복사하고 새 목록을 반복하여 이전 목록의 요소를 제거하는 것이고, 다른 하나는 for(int i; i

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-17 10:06:40

    계란을 셀 때, 누군가 몰래 바구니에 계란을 넣거나 가져가면, 직접 계란을 가져가거나 가져가지 않는 이상 잘못된 계산을 하게 되는 경우도 있습니다.

    프로그램에서

    회신하다
    0
  • 취소회신하다