ArrayList에서 동시 반복 및 제거 중 ConcurrentModificationException 처리
Java에서 컬렉션을 동시에 수정하면서 컬렉션을 반복하면 java. util.ConcurrentModificationException. 이 예외는 추가 또는 제거 작업으로 인해 반복 중에 컬렉션의 구조가 변경될 때 발생합니다.
ArrayList로 작업할 때 이 문제를 피하려면 다음 모범 사례를 고려하십시오.
제거할 요소 목록 만들기:
제거해야 하는 요소를 추적하기 위해 별도의 목록을 유지관리하세요. 루프 내에서 원래 목록에서 직접 요소를 제거하는 대신 이 목록에 요소를 추가하기만 하면 됩니다. 루프가 끝나면 ArrayList의 RemoveAll() 메서드를 사용하여 목록에서 모든 요소를 제거합니다.
Iterator의 Remove 메서드 사용:
Employ 반복자 자체에서 사용 가능한 제거() 메소드. 이렇게 하려면 목록을 반복하기 위해 Java 8의 향상된 for 루프 구문을 포기해야 합니다.
예를 들어 ArrayList에서 길이가 5보다 큰 문자열을 제거하려는 경우:
<code class="java">List<String> list = new ArrayList<String>(); ... for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) { String value = iterator.next(); if (value.length() > 5) { iterator.remove(); } }</code>
위 내용은 Java에서 동시 반복 중에 ArrayList에서 요소를 안전하게 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!