我想知道第三个java为什么不能删除
删除
------解决方案--------------------
你这题在于理解remove()方法出错了。你先看下remove()方法的源码:
public E remove(int index) {
rangeCheck(index);
modCount++;
E oldValue = elementData(index);
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work
return oldValue;
}
remove()方法执行后,它的数组下标是会变化的,比如你删除下标为0的元素,那么原先下边为1的元素会变成下标为0。就跟排队一样,后面的要往前面挤。而你是for循环中,i是不断加1的。所以才会出现这样的错误。