时间:2020-07-15 22:31:24 | 栏目: | 点击:次
String str1 = new String("1");
String str2 = new String("2");
String str3 = new String("3");
String str4 = new String("4");
String str5 = new String("5");
List list = new ArrayList();
list.add(str1);
list.add(str2);
list.add(str3);
list.add(str4);
list.add(str5);
System.out.println("list.size()=" + list.size());
for (int i = 0; i < list.size(); i++) {
list.remove(i);
// i--;
//System.out.println(i+" "+list.get(i)+" ");
}
System.out.println("after remove:list.size()=" + list.size());
list.size()=5 after remove:list.size()=0但实际上结果却是:
list.size()=5 after remove:list.size()=2原因如下: List每remove掉一个元素以后,后面的元素都会向前移动 ,此时如果执行i++,则刚刚移过来的元素没有被读取。
for (int i = 0; i < list.size(); i++) {
list.remove(i);
i--;
}
解决方法2:先删除后面的元素
for (int i = list.size()-1; i >= 0; i--) {
list.remove(i);
}
解决方法3:使用iterator删除
for(Iterator it = list.iterator();it.hasNext();){
it.remove();
}
好啦,大家应该明白怎么回事啦!