안드로이드에서 ArrayList
을 사용할 때 ConcurrentModificationException
을 피하는 방법?ArrayList를 사용할 때 ConcurrentModificationException을 피하는 방법?
누군가가 그것을 피하기 위해 엄지 손가락의 기본 규칙을 줄 수 있습니까?
안드로이드에서 ArrayList
을 사용할 때 ConcurrentModificationException
을 피하는 방법?ArrayList를 사용할 때 ConcurrentModificationException을 피하는 방법?
누군가가 그것을 피하기 위해 엄지 손가락의 기본 규칙을 줄 수 있습니까?
arraylist를 반복 할 때 요소를 추가/제거하지 않음.
이 코드는 반복 중에 목록을 수정하면서 ConcurrentModificationException을 발생시킵니다.
List<String> al = new ArrayList<String>();
al.add("2");
for(String s: al) {
al.remove("2");
}
이 코드는 ConcurrentModificationException을 throw하지 않습니다.
List<String> al = new Arraylist<String>();
Iterator<String> itr = al.iterator();
while(itr.hasNext()){
itr.next();
itr.remove();
}
반복하는 동안 목록을 수정할 때 또한 ConcurrentModificationException
를 포기하지 것이다 java.util.Concurrent 패키지 등 java.util.concurrent.CopyOnWriteArrayList에서 클래스의 일부를 사용할 수 있습니다 : 당신이 추가 할 때
CopyOnWriteArrayList<String> al = new CopyOnWriteArrayList<String>();
al.add("2");
Iterator<String> itr = al.iterator();
while(itr.hasNext()){
itr.next();
al.add("3");
}
이 발생/제거/요소를 반복하면서 ArrayList에 요소를 삽입하십시오. 나쁜 코드의
예 :
Iterator it = list.iterator()
while (it.hasNext())
{
Object o = it.next();
list.remove(o);
}
당신이 ArrayList의 요소를 제거하는 경우는, 반복자를 사용합니다. 예 :
ArrayList<String> someStrings;
// fill someStrings
Iterator<String> it = someStrings.iterator();
while(it.hasNext()){
String buf = it.next();
// do sth here
}
'ConcurrentModificationException'에 대해 이야기하고 있습니까? 도움이 필요하면 문제의 정확한 세부 정보를 제공해야합니다. – jlordo
arraylist 방법을 사용하고 있습니까? –