java.util.ConcurrentModificationException
에 문제가 있습니다. 내 autocompletextext에서 하나 이상의 characater 이상을 삭제했을 때 강제로 닫았습니다. 아무도 그 일이 벌어지고 있다는 것을 압니다. 그리고 그 문제에 대한 해결책은 무엇입니까?java.util.ConcurrentModificationException 오류를 수정하는 방법?
감사합니다.
java.util.ConcurrentModificationException
에 문제가 있습니다. 내 autocompletextext에서 하나 이상의 characater 이상을 삭제했을 때 강제로 닫았습니다. 아무도 그 일이 벌어지고 있다는 것을 압니다. 그리고 그 문제에 대한 해결책은 무엇입니까?java.util.ConcurrentModificationException 오류를 수정하는 방법?
감사합니다.
같은 시점에 컬렉션에서 추가 및 삭제하는 것으로 보입니다. 이렇게하면 단일 시점에서 구조적으로 컬렉션을 두 번 이상 수정하는 것입니다. 따라서 java.util.ConcurrentModificationException
을 얻고 있습니다. 이는 "Fail-Fast"반복자가 컬렉션에 사용 된 결과입니다. 페일 세이프 및 페일 패스트 반복기를 설명하는이 링크를 살펴볼 수 있습니다. what-is-fail-safe-fail-fast-iterators-in-java-how-they-are-implemented 및 체크 아웃은 Stephen C.이 작성한 답변입니다.
이 문제를 해결하는 코드 예가 있습니까? – Nicholas
꽤 간단합니다. 컬렉션의 구조를 동일한 시점에서 구조적으로 수정하려고하면 해당 컬렉션을 반복하는 데 사용하는 반복자가 실패합니다. 다음 예제 스 니펫을 확인하십시오 : 'ArrayList sampleList = new ArrayList (); sampleList.add ("hello"); sampleList.add ("world"); 반복자 sampleListItr = sampleList.iterator(); // 목록에서 첫 번째 항목을 제거하려고하면 반복기가 실패합니다. sampleList.remove (0); while (sampleListItr.hasNext()) { System.out.println (sampleListItr.next()); }' 반복자를 피하십시오. –
반복자를 사용하지 않으므로이 문제를 피할 수 있습니다. Java 8은 모든 컬렉션을 반복하는 데 도움이되는'foreach' 메소드를 제공합니다. –