java exception之ConcurrentModificationException
原因
List<String> arrayList = new ArrayList<>();
arrayList.add("jack2");
arrayList.add("jack3");
arrayList.add("jack4");
arrayList.add("jack5");
arrayList.add("jack6");
arrayList.add("jack7");
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()){
String key = iterator.next();
arrayList.remove(key);
}
解决
1、使用iterator.remove()方法;
List<String> arrayList = new ArrayList<>();
arrayList.add("jack2");
arrayList.add("jack3");
arrayList.add("jack4");
arrayList.add("jack5");
arrayList.add("jack6");
arrayList.add("jack7");
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()){
String key = iterator.next();
iterator.remove();
}
2、使用线程安全CopyOnWriteArrayList进行删除操作
List<String> myList = new CopyOnWriteArrayList<String>();
myList.add( "1");
myList.add( "2");
myList.add( "3");
myList.add( "4");
myList.add( "5");
Iterator<String> it = myList.iterator();
while (it.hasNext()) {
String value = it.next();
if (value.equals( "3")) {
myList.remove(value);
}
}
System.out.println(myList.toString());