package arraylist;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ForDemo {
/*
* 普通for循环,可以删除,但是索引要--
* 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
* 增强for循环不能删除
*/
public static void main(String[] args) {
// demo1();
//demo2();
//demo3();
}
private static void demo3() {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
for (String string : list) {//ConcurrentModificationException不能用增强for删除,会产生并发异常
if("b".equals(string))
list.remove(string);
}
System.out.println(list);
}
private static void demo2() {
//迭代期可以删除,但是切记要用迭代期自己的方法进行删除
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
// for (Iterator<String> it = list.iterator(); it.hasNext();) {
// String s = it.next();
// if ("b".equals(s)) {
// it.remove();//此处一定一定要注意要用迭代期自带的方法进行删除,千万不能用集合中的方法删除,否则会报并发修改异常!
//
// }
//
// }
// System.out.println(list);
for (ListIterator<String> it = list.listIterator(); it.hasNext();) {
String s = it.next();
if ("b".equals(s)) {
it.remove();
}
}
System.out.println(list);
}
private static void demo1() {
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
for (int i = 0; i < list.size(); i++) {
if ("b".equals(list.get(i))) {
list.remove(i);
i--;// 普通for可以删除一定要记得进行--操作,因为移除某个元素后,索引自动跳到下一个,如果正好跳到那个该删除的元素那里,便删除不了了。
}
}
System.out.println(list);
}
}
|
|