测试用例:
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
list.add("b");
/** * 1,for * 如果间隔 没有问题 * 如果相邻 保留一个 */ for (int i = 0; i < list.size(); i++) { if(list.get(i).equals("b")) { //list.remove(i); //list.remove(i--); 如果相邻 则指针返回一次 } } System.out.println(list);
/** * 2,迭代器删除 */ Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = (String) it.next(); if(s.equals("b")) { //list.remove("b");//并发修改异常,不能用集合的删除方法,调用迭代器自身remove()方法 it.remove(); } } /* * iterator的另一种写法 */ // for(Iterator<String> it = list.iterator();it.hasNext();) { // if("b".equals(it.next())) { // it.remove(); // } // } // System.out.println(list);
/** * 3,foreach */ for(String s:list) { if("b".equals(s)) { //list.remove("b"); 并发修改异常,foreach底层依赖Iterator //所以不能用remove删除 } } System.out.println(list);