java.util.ConcurrentModificationException 오류가 발생할때는 대부분 컬렉션 삭제할때이다.
이럴때는 Iterator를 사용하면 된다.
<< 잘못된 코드 >>
private ArrayList<mediastorefileinfo> mItems; for (MediaStoreFileInfo info : mItems) { if(!info.getSelected()) mItems.remove(info); }
===>
<< 정상적인 코드 >>
for (Iterator<mediastorefileinfo> iterator = mItems.iterator(); iterator.hasNext() ; ) { MediaStoreFileInfo info = iterator.next(); if(!info.getSelected()){ iterator.remove(); } }
<< 잘못된 코드 >>
for( Pixel px : pixel){ [...] if(px.y > gHeigh){ pixel.remove(pixel.indexOf(px)); // here is the thing pixel.remove(px); //doesn't work either } }
<< 정상적인 코드 >>
for (Iterator<Pixel> iterator = pixels.iterator(); iterator.hasNext(); ) { Pixel px = iterator.next(); if(px.y > gHeigh){ iterator.remove(); } }
참고 : http://stackoverflow.com/questions/9691328/removing-object-from-arraylist-in-for-each-loop
'자바 일반' 카테고리의 다른 글
[Java]Collections.sort로 정렬하기(문자열, 숫자) (0) | 2014.07.28 |
---|---|
HashSet 사용시 중복 여부 판별 부여 방법 (0) | 2014.07.16 |
헤드퍼스트 자바, 디자인패턴 소스 (0) | 2013.07.01 |
java5에 추가된 foreach문 (0) | 2012.03.22 |
JCO 12회, 성공하는 개발자를 위한 아키텍처 요구사항 분석 방법(강승준) (0) | 2012.02.27 |