直接遍历删除的时候一般会写
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
for(int i=0;i<list.size();i++){list.remove(i);
}
System.out.println(list);
输出:[b, d]
这里面本意可能是全部删除,这里还剩下俩个
当一个元素被删除时,列表的大小缩小并且下标变化,所以当你想要在一个循环中用下标删除多个元素的时候,它并不会正常的生效。
正确:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d"));
for(int i=0;i<list.size();i++){
if(list.remove(i)!=null){
i--;
}
}
System.out.println(list);
输出:[]
或者是迭代后删除:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b",
"c", "d"));
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String s = iter.next();
if (s.equals("a"))
iter.remove();
}
System.out.println(list);