62,614
社区成员
发帖
与我相关
我的任务
分享
public void test(){
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(i); //向集合添加10个数
}
System.out.println("删除前"+list.size());
for(int i=0;i<list.size();i++){
list.remove(i); //删除所有
}
System.out.println("删除后"+list.size());
}
public void test(){
ArrayList<Integer> list=new ArrayList<Integer>();
for(int i=0;i<10;i++){
list.add(i); //向集合添加10个数
}
System.out.println("删除前"+list.size());
for(int i=0;i<list.size();i++){
list.remove(Integer.value(i)); //remove其中的元素,而不是remove下标
}
System.out.println("删除后"+list.size());
}
for (int i = 0; i < list.size(); i++) {
list.remove(i); // 删除所有
System.out.println("第"+i+"次,长度为:"+list.size());
}
打印这句话你就明白了。。
for(Iterator<Integer> arrayIterator = list.iterator(); arrayIterator.hasNext();){
arrayIterator.next();
arrayIterator.remove();
}
for(int i=0;i<list.size();i++){
list.remove(i); //删除所有
}
这是你写的,到最后list.size()是5了。i也是5了。故删除不了所有的元素。
不妨这么写吧。
for(int i=list.size();i>0;i--){
list.remove(i); //删除所有
}
从最后一位开始删除就不会有这样的问题了。list.clear()
就好了,或者用i从大到小循环就可以避免上面的问题。 for(int i=0;i<list.size();i++){
list.remove(i); //删除所有
}
这里的list,当你remove一个元素的时候,list的size就会减1,当你remove掉5个元素的时候,list.size()为5,此时i也为5,i<list.size()为假,跳出此循环,这时候,list还有5个元素。所以你只remove其中5个元素而已