티스토리 뷰
발생일: 2008.09.03
문제:
for 문을 돌면서 ArrayList 나 Vector를 참조 중에, element를 삭제하려고 하니 Exception이 발생한다.
해결책:
Iterator의 remove()를 사용한다!!
문제:
for 문을 돌면서 ArrayList 나 Vector를 참조 중에, element를 삭제하려고 하니 Exception이 발생한다.
해결책:
특히 vector의 경우는 동기화가 철저하게 되어 있기 때문에
for 문들 돌면서 element를 remove하면 exception이 발생한다
예)
Vector v = new Vector();
...
for (One one : v) {
...
v.remove(one); // 이렇게 하면 현재 v 벡터를 참조 중에 참조 중인 객체를 변경하려 하기 때문에 동기화에 어긋나 exception이 발생된다
}
exception없이 동기화를 잘 처리하려면...
Iterator를 사용하자.
예)
for (Iterator it = v.iterator(); it.hasNext();) {
it.next(); // it.next()를 호출한 후에
...
it.remove(); // 해당 객체를 제거한다. next() 호출 후 1회만 가능하다
}
좀더 자세한 내용은.
구글에서 vector arraylist remove exception 등으로 검색해보자
반응형
댓글
공지사항