List对象定义
List<String> list = new ArrayList<>();
list.add("aa");
list.add("aa");
list.add("aa");
list.add("aa");
list.add("");
list.add("aa");
list.add("aa");
list.add("aa");
list.add("aa");
list.add("aa");
List使用for循环删除元素
for(int i=0; i<list.size(); i++){
list.remove(i);
}
System.out.println("list size =>" + list.size() + ", list =>" + list);
答案是: list size =>5, list =>[aa, aa, aa, aa, aa]
原因是因为list在删除的时候大小会改变,但是i的下标会继续移动添加导致此结果
List使用迭代器循环删除元素
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
if("aa".equals(next)){
iterator.remove();
}
}
System.out.println("list size =>" + list.size() + ", list =>" + list);
答案是: list size =>1, list =>[]
原因是因为list在删除的时候大小虽然会改变,但是迭代器是一行一行取出比较然后删除的没有下标跳动问题