list集合有个特点,比如说一个list里面有三个元素a,b,c,对应的索引分别是0,1,2。当调用remove(0)时,list会移除a这个元素,这个时候list里面的元素就变成b,c,对应的索引值分别为0,1。这个时候list的size已经变成了2,但是如楼主的for循环的话,循环的上限还是最开始的list的size值,也就是3。如此下去每移除一个元素的时候,list的索引取值范围都会变小,最后如果remove(i)中i的值超出了当前集合的范围了,就会报异常
是这样子的,你这种写法,应该不会报空指针。原因很简单,for(int i=0;i<list.size();i++){list.remove(i)},list.size(),每次循环都会执行,所以不会报空的,但是由于删除后,list大小减小,而i++,每次都会执行,所以可能遍历不完~建议如果你要是删除整个list,可以使用 list.clear();方法。
如果是遍历删除,一般选择迭代器删除的