해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외
소개:
Java 개발에서 컬렉션은 데이터 집합을 저장하고 조작하기 위해 매우 일반적으로 사용되는 데이터 구조입니다. 그러나 순회 작업에 컬렉션을 사용할 때 컬렉션 순회 예외가 자주 발생합니다. 이 문서에서는 이 문제의 원인과 해결 방법을 설명하고 해당 코드 예제를 제공합니다.
1. 컬렉션 순회 예외의 원인:
컬렉션을 순회하기 위해 반복자 또는 for-each 루프를 사용할 때 순회 프로세스(예: 요소 추가 또는 삭제) 중에 컬렉션이 수정되면 ConcurrentModificationException 예외가 발생합니다. 이는 순회 프로세스 중에 반복자 또는 for-each 루프가 컬렉션의 구조가 변경되었는지 여부를 감지하기 위해 카운터를 유지하고 변경 사항이 발견되면 예외를 발생시키기 때문입니다.
2. 해결 방법:
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 删除元素 } }
List<String> 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); // 删除元素 } }
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>(); // 添加元素 map.put("A", 1); map.put("B", 2); map.put("C", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() == 2) { map.remove(entry.getKey()); // 删除元素 } }
결론:
컬렉션 순회 예외는 순회 프로세스 중 컬렉션 수정으로 인해 발생합니다. 이 문제를 해결하기 위해 Iterator를 사용하여 컬렉션을 순회하고 Remove() 메서드를 사용하거나 일반 for 루프를 사용하여 컬렉션을 순회하고 List의 Remove() 메서드를 사용하거나 동시 컬렉션 클래스를 사용할 수 있습니다. 적절한 솔루션을 선택하면 컬렉션 순회 예외 문제를 효과적으로 방지하고 프로그램의 정상적인 작동을 보장할 수 있습니다.
총 단어 수: 437 단어
위 내용은 해결 방법: Java 컬렉션 오류: 컬렉션 순회 예외의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!