一、使用场景
如果有一个存在一个字符串List{"a","a",”,"b","c","d","a","b",“a”,"b","c","d"},需要删除其中的"a",我们常常使用for循环遍历该List,然后依次判断每个元素是否为"a",如果该元素为"a"则将该元素从List中romve。
二、错误的方式
错误的方法1
for (int i = 0; i <list.size(); i++) {
if(list.get(i).equals("a"))){
list.remove(i);
}
}
这种方式删除数据不正确,是因为list每删除一个元素,后面的元素会补上也就是如果删除了下标为1的数据,下标2立马缓冲下标1,所以导致删除会混乱,出现漏删数据。
错误的方法2
for(String str:list){
if(str.equals("a")){
list.remove(str);
}
}
这种方式会直接报错java.util.ConcurrentModificationException。
三、正确的方式
正确的方法1
for (int i = list.size()-1; i >= 0; i--) {