for循环删除list中多个元素出现的误区

错误的做法是:

for(int i= 0;i<list.size();i++) 

因为在你删除元素的同时list.size()也在变小,这样就会照成越界。

正确做法:因为要删除list里面的多个的值,所以会涉及到一个问题,就是当你删除掉下标为1的元素时,原来下标为2的元素会自动改变自己的下标为1,后面的元素依次把自己的下标值减1,鉴于这种情况,我们想循环删除list中的多个元素的话,就必须从后往前删,这样保障了你删除了一个元素之后,list中元素的下标移动不会影响到那些需要删除,但是还未删除到的以元素.

for(int i= list.size()-1;i>=0;i--) 

转自:

http://blog.csdn.net/baiyulinlin1/article/details/52549183

原文地址:https://www.cnblogs.com/flywang/p/8566799.html