当我们遍历list集合的时候会直接用for循环进行遍历,通常情况下是没有问题的,然而如果当我们遍历的时候执行删除操作的话就会出现问题了。
例子如下:
当我们删除的时候,第一次循环是没有问题的,但是当第二次循环的时候,i的值这时候为1,也就是list的第二个元素,继续往下肯定也是错的。
解决方案:
之所以会产生这样的原因是因为i的值每循环一次都在递增,当然,如果你没次循环的时候都这样:list.remove(0);也是没有问题的,除此之外我们还可以通过逆序遍历来解决这个问题,如下所示:
当我们遍历list集合的时候会直接用for循环进行遍历,通常情况下是没有问题的,然而如果当我们遍历的时候执行删除操作的话就会出现问题了。
例子如下:
当我们删除的时候,第一次循环是没有问题的,但是当第二次循环的时候,i的值这时候为1,也就是list的第二个元素,继续往下肯定也是错的。
解决方案:
之所以会产生这样的原因是因为i的值每循环一次都在递增,当然,如果你没次循环的时候都这样:list.remove(0);也是没有问题的,除此之外我们还可以通过逆序遍历来解决这个问题,如下所示: