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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-09 13:44:11549검색

How to Safely Remove Elements from a Collection During Iteration in Java?

반복 중 컬렉션에서 요소 제거

반복 중 컬렉션에서 요소를 제거하는 경우 ConcurrentModificationException을 방지하는 방법을 고려하는 것이 중요합니다. 한 가지 접근 방식은 컬렉션 복사본을 반복하여 반복 중에 수정이 발생하지 않도록 하는 것입니다. 또 다른 접근 방식은 실제 컬렉션에서 반복자를 사용하여 직접 제거 작업을 허용하는 것입니다.

수집 및 제거

수집 및 제거 접근 방식에서는 제거할 모든 요소를 ​​찾습니다. 제거하여 별도의 목록에 저장하세요. 반복 후에는 원래 컬렉션에서 이러한 요소를 제거합니다. 이 기술은 컬렉션에 구애받지 않으며 모든 유형의 컬렉션에서 작동합니다.

ListIterator 사용

목록 작업 시 ListIterator는 요소를 지원하므로 더 효율적인 옵션을 제공합니다. 반복하는 동안 제거 및 추가. 이 접근 방식은 반복 중에 실제 컬렉션을 직접 수정합니다.

JDK 8 Enhancements

Java 8 이상 버전에서 "removeIf" 메서드와 스트림 API는 다음에 대한 추가 옵션을 제공합니다. 요소 제거. "removeIf"를 사용하면 조건자와 일치하는 요소를 제거할 수 있는 반면, 스트림을 사용하면 요소를 필터링하여 새 컬렉션에 저장할 수 있으며, 그런 다음 원본을 교체하는 데 사용할 수 있습니다.

하위 목록 또는 하위 집합

정렬된 목록의 경우 하위 목록이나 하위 집합을 사용하면 연속된 요소를 효율적으로 제거할 수 있습니다. 하위 목록 또는 하위 집합을 지워 원래 목록을 간접적으로 수정합니다.

고려 사항

가장 좋은 접근 방식은 특정 시나리오에 따라 다릅니다.

  • 수집 및 제거는 다목적이며 모든 컬렉션 유형에서 작동합니다.
  • ListIterator는 효율적이고 제거와 추가를 모두 지원합니다.
  • 제거를 지원하지 않는 반복기 구현 가능성으로 인해 Iterator는 덜 안전합니다.
  • JDK 8 개선 사항은 효율성과 유연성을 제공하지만 특정 Java 버전이 필요합니다.
  • 하위 목록 또는 하위 집합은 정렬된 목록에서 연속된 요소를 제거하는 효율적인 방법을 제공합니다.

위 내용은 Java에서 반복하는 동안 컬렉션에서 요소를 안전하게 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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