해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외

PHPz
풀어 주다: 2023-08-25 23:48:22
원래의
1618명이 탐색했습니다.

해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외

해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외

소개:
Java 개발에서 컬렉션은 데이터 집합을 저장하고 조작하기 위해 매우 일반적으로 사용되는 데이터 구조입니다. 그러나 순회 작업에 컬렉션을 사용할 때 컬렉션 순회 예외가 자주 발생합니다. 이 문서에서는 이 문제의 원인과 해결 방법을 설명하고 해당 코드 예제를 제공합니다.

1. 컬렉션 순회 예외의 원인:
컬렉션을 순회하기 위해 반복자 또는 for-each 루프를 사용할 때 순회 프로세스(예: 요소 추가 또는 삭제) 중에 컬렉션이 수정되면 ConcurrentModificationException 예외가 발생합니다. 이는 순회 프로세스 중에 반복자 또는 for-each 루프가 컬렉션의 구조가 변경되었는지 여부를 감지하기 위해 카운터를 유지하고 변경 사항이 발견되면 예외를 발생시키기 때문입니다.

2. 해결 방법:

  1. Iterator를 사용하여 컬렉션을 순회하고, 순회 프로세스 중에 요소를 삭제하려면 Iterator의 Remove() 메서드를 사용하세요. 예는 다음과 같습니다.
List list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); Iterator iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 删除元素 } }
로그인 후 복사
  1. 일반 for 루프를 사용하여 컬렉션을 순회하는 경우 List의 Remove() 메서드를 사용하여 요소를 삭제할 수 있으며, 변경 사항이 변경되지 않도록 역순으로 컬렉션을 순회해야 합니다. 색인. 예는 다음과 같습니다.
List list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); for (int i = list.size() - 1; i >= 0; i--) { String item = list.get(i); if (item.equals("B")) { list.remove(i); // 删除元素 } }
로그인 후 복사
  1. ConcurrentHashMap 또는 CopyOnWriteArrayList와 같은 동시 컬렉션 클래스를 사용하면 예외를 발생시키지 않고 순회 중에 컬렉션을 수정할 수 있습니다. 예는 다음과 같습니다.
ConcurrentHashMap map = new ConcurrentHashMap<>(); // 添加元素 map.put("A", 1); map.put("B", 2); map.put("C", 3); for (Map.Entry entry : map.entrySet()) { if (entry.getValue() == 2) { map.remove(entry.getKey()); // 删除元素 } }
로그인 후 복사

결론:
컬렉션 순회 예외는 순회 프로세스 중 컬렉션 수정으로 인해 발생합니다. 이 문제를 해결하기 위해 Iterator를 사용하여 컬렉션을 순회하고 Remove() 메서드를 사용하거나 일반 for 루프를 사용하여 컬렉션을 순회하고 List의 Remove() 메서드를 사용하거나 동시 컬렉션 클래스를 사용할 수 있습니다. 적절한 솔루션을 선택하면 컬렉션 순회 예외 문제를 효과적으로 방지하고 프로그램의 정상적인 작동을 보장할 수 있습니다.

총 단어 수: 437 단어

위 내용은 해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!