下面分享三个常用的方法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的数据,在删除第一个符合条件的数据以后,后面的一个数据位置会提前一位,这样在下一次循环的时候,会跳过这个数据位置改变了的数据,就造成了有重复数据没有删除