내 생각에는 for 루프를 사용하여 목록의 요소를 삭제하는 데 문제가 있는 것 같은데 향상된 for 루프를 사용할 수 있습니다. 그러다가 오늘 사용하다가 오류를 발견해서 과학 조사를 하러 갔습니다. , 그리고 이것이 오류라는 것을 알게되었습니다. 아래에서 그것에 대해 이야기합시다. . 연락하시면 기사 끝 부분으로 바로 이동할 수 있습니다. 요약을 참조하세요. .
JAVA에서 목록을 반복하는 방법에는 for 루프, 향상된 for 루프(foreach 루프라고도 함), 반복자 순회라는 세 가지 방법이 있습니다.
1. for 루프가 목록을 순회합니다
for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); }
이 방법의 문제점은 요소를 삭제한 후 목록의 크기가 변경되고 인덱스도 변경된다는 것입니다. 변경 사항이 변경되므로 탐색할 때 일부 요소가 누락될 수 있습니다. 예를 들어, 첫 번째 요소를 삭제하고 인덱스에 따라 두 번째 요소에 계속 접근하게 되면, 삭제로 인해 후속 요소들이 한 위치 앞으로 이동하게 되므로 실제로는 세 번째 요소에 접근하게 됩니다. 따라서 이 방법은 특정 요소를 삭제할 때 사용할 수 있지만 루프 내에서 여러 요소를 삭제하는 데는 적합하지 않습니다.
2. 향상된 for 루프
for(String x:list){ if(x.equals("del")) list.remove(x); }
이 방법의 문제점은 요소를 삭제한 후에도 계속 루프를 수행하면 오류 메시지 ConcurrentModificationException이 보고된다는 것입니다. 요소가 사용되는 경우 동시 수정으로 인해 예외가 발생합니다. 그러나 삭제 후 바로 break를 사용하여 뛰어내리면 오류가 발생하지 않습니다.
3. 반복자는
Iterator<String> it = list.iterator(); while(it.hasNext()){ String x = it.next(); if(x.equals("del")){ it.remove(); } }
를 순회합니다. 이 메서드는 정상적으로 순환하고 삭제할 수 있습니다. 하지만 iterator의 제거 메소드를 사용하는 경우, list의 제거 메소드를 사용하면 위에서 언급한 ConcurrentModificationException 오류도 보고된다는 점에 유의해야 합니다.
요약:
(1) 목록의 특정 요소를 주기적으로 삭제하려면 세 가지 방법 중 하나를 사용하면 되지만, 사용 시 위에서 분석한 문제에 주의해야 합니다.
(2) 목록의 여러 요소를 반복하려면 iterator 메서드를 사용해야 합니다.
자바에서 목록의 요소를 주기적으로 삭제하는 방법에 대한 위의 요약은 모두 편집자가 공유한 내용이므로 참고가 되기를 바라며 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.
Java에서 루프의 목록 요소를 삭제하는 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!