>Java >java지도 시간 >Java에서 동시 반복 중에 ArrayList에서 요소를 안전하게 제거하는 방법은 무엇입니까?

Java에서 동시 반복 중에 ArrayList에서 요소를 안전하게 제거하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-29 10:14:03986검색

How to Safely Remove Elements from an ArrayList During Concurrent Iteration in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.