1. List 删除的时候 ,用remove()带来问题,或者是用别的删除方法?
1.1 增强for循环中使用remove删除
ArrayList<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String s:list){
if(s.equals("5")){
list.remove(s);
}
}
结果:
Exception in thread “main” java.util.ConcurrentModificationException
modCount是指这个list对象从new出来到现在被修改次数,当调用List的add或者remove方法的时候,这个modCount都会自动增减;
expectedModCount是指Iterator现在期望这个list被修改的次数是多少次。
在iterator的next方法中会判断modCount和expectedModCount是否相等不相等就抛异常
1.2 迭代器删除
Iterator<String> iterator=list.iterator();
while(iterator.hasNext())
{
if(iterator.next().equals("d")){
iterator.remove();
}
}
1、当创建完成指向某个集合或者容器的Iterator对象时,这时的指针其实指向的是第一个元素的上方,即指向一个 空
2、当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针
3、当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异 常。
4、remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常。