版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33369215/article/details/53198487
下面分享三个常用的方法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Review_1 {
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("20161127");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
//1.i--操作
for(int i = 0;i < list.size();i++) {
String b = list.get(i);
if (b.equals("20161127asdf")) {
list.remove(i);
i--;
}
}
System.out.println(list.size());
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
//2.反向遍历
for(int i = list.size() - 1;i >= 0;i--){
String b = list.get(i);
if(b.equals("20161127asdf")){
list.remove(i);
}
}
System.out.println(list.size());
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
//3.调用Iterator的remove()方法安全删除元素,避免异常
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
String b = iter.next();
if(b.equals("20161127asdf")){
iter.remove();
}
}
System.out.println(list.size());
}
}
Java中list集合遍历删除元素,特别要注意下发的错误方法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Review_1 {
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("20161127");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
list.add("20161127asdf");
//1.i--操作
for(int i = 0;i < list.size();i++) {
String b = list.get(i);
if (b.equals("20161127asdf")) {
list.remove(i);
}
}
System.out.println(list.size());
}
}
控制台的是 4, 造成这个错误原因是因为没有全部遍历list的数据,在删除第一个符合条件的数据以后,后面的一个数据位置会提前一位,这样在下一次循环的时候,会跳过这个数据位置改变了的数据,就造成了有重复数据没有删除