list集合可以用remove方法来删除元素,但是用简单的for循环遍历来依次删除肯定是错的
package udf;
import java.util.ArrayList;
import java.util.Arrays;
public class Quanxian {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>(Arrays.asList("q","w","e","r","t"));
for(int i=0;i<list.size();i++){
list.remove(i);
}
System.out.println(list);
}
}
输出结果可不是空集合,而是[w, r],因为集合里的元素被删掉一个后,后面的元素会往前移动,填补空缺的下标位置,在填补后,i的值已经加1了,于是这个元素就被跳过去了。
怎样才能实现遍历删除呢?正着不行,倒着遍历就行了
package udf;
import java.util.ArrayList;
import java.util.Arrays;
public class Quanxian {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>(Arrays.asList("q","w","e","r","t"));
for(int i=list.size()-1;i>=0;i--){
list.remove(i);
}
System.out.println(list);
}
}
结果是空集合。
或者使用迭代器
package udf;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
public class Quanxian {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>(Arrays.asList("q","w","e","r","t"));
Iterator<String> it=list.iterator();
while(it.hasNext()){
String x=it.next();
if(list.contains(x)){
it.remove();
}
}
System.out.println(list);
}
}