日期:2014-05-19 浏览次数:20738 次
public static void main(String[] args) { List<String> l = new ArrayList<String>(); l.add("11111"); l.add("22222"); for(String a : l){ l.remove(a); } for(int i=0;i<l.size();i++){ l.remove(l.get(i)); } for(int i=0;i<l.size();i++){ l.remove(i); } System.out.println(l.size()); }
List<String> l = new ArrayList<String>(); l.add("11111"); l.add("22222"); for(Iterator<String> it = l.iterator();it.hasNext();){ it.next(); it.remove(); } System.out.println(l);
------解决方案--------------------
List<String> l = new ArrayList<String>();
l.add("11111");
l.add("22222");
while(l.iterator().hasNext()) {
l.remove(l.get(0));
}
System.out.println(l.size());
------解决方案--------------------
public static void main(String[] args) { List<String> l = new ArrayList<String>(); l.add("11111"); l.add("22222"); while(l.size()>0){ l.remove(l.size()-1) } System.out.println(l.size()); }
------解决方案--------------------
for循环中利用递减方式!!!(int i=l.size();i>=0;i--)......
------解决方案--------------------
package com.zf.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test5 { public static void main(String[] args) { List<String> l = new ArrayList<String>(); l.add("11111"); l.add("22222"); //单独用下面三个中的某一个方法肯定是都不行的。 //(1) 这里foreach循环,其实就相当于是Iterator在迭代集合对象 , // Iterator在迭代对象的时候是不允许被迭代的对象修改或Remove的,除非用Iterator自己的remove()方法 for(String a : l){ l.remove(a); } //改成下面这样是可以的。 Iterator<String> it = l.iterator(); while(it.hasNext()){ it.next(); it.remove(); } //(2) 你可以试想一下 , 刚开始的时候l.size() = 2 , i = 0 // 当执行完第一次循环 就移除了一个对象 此时 , l.size() == 1 , i = 1 // 此时 i< l.size() 不成立 , 就不会继续循环了。 for(int i=0;i<l.size();i++){ l.remove(l.get(i)); } // 同上 for(int i=0;i<l.size();i++){ l.remove(i); } System.out.println(l.size()); } }
------解决方案--------------------
当你删除了第一个对象后,list内部更新了index,这时list.size=1,而i==1 跳出循环,所以不能完全删除
------解决方案--------------------
其实你已经删除了一个了,size为1 不是2 说明已经删除了一个而已,其它的楼上说的很清楚了
------解决方案--------------------
for(int i=0;i<l.size();i++){
l.remove(i);
}
当i=0时删除了一个,当i=1时size()=1, 循环退出了
for(int i=0;i<l.size();i++){
l.remove(l.get(i));
}
一个道理
------解决方案--------------------