三種迭代的能否刪除
阿新 • • 發佈:2018-11-06
public class Demo1_Foreach { /** * * A:增強for概述 * 簡化陣列和Collection集合的遍歷 * B:格式: * for(元素資料型別 變數 : 陣列或者Collection集合) { 使用變數即可,該變數就是元素 } * C:案例演示 * 陣列,集合儲存元素用增強for遍歷 * D:好處 * 簡化遍歷 增強for迴圈底層依賴的是迭代器(Iterator) */ public static void main(String[] args) { //demo1(); //demo2(); ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); //1,普通for迴圈刪除,索引要-- /*for(int i = 0; i < list.size(); i++) { if("b".equals(list.get(i))) { list.remove(i--); //通過索引刪除元素 } }*/ //2,迭代器刪除 /*Iterator<String> it = list.iterator(); while(it.hasNext()) { if("b".equals(it.next())) { //list.remove("b"); //不能用集合的刪除方法,因為迭代過程中如果集合修改會出現併發修改異常 it.remove(); } }*/ /*for(Iterator<String> it2 = list.iterator(); it2.hasNext();) { if("b".equals(it2.next())) { //list.remove("b"); //不能用集合的刪除方法,因為迭代過程中如果集合修改會出現併發修改異常 it2.remove(); } }*/ //3,增強for迴圈,增強for迴圈不能刪除,只能遍歷 for (String string : list) { if("b".equals(string)) { list.remove("b"); } } System.out.println(list); } public static void demo2() { ArrayList<Person> list = new ArrayList<>(); list.add(new Person("張三", 23)); list.add(new Person("李四", 24)); list.add(new Person("王五", 25)); list.add(new Person("趙六", 26)); for (Person person : list) { System.out.println(person); } } public static void demo1() { int[] arr = {11,22,33,44,55}; for (int i : arr) { System.out.println(i); } ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); for (String string : list) { System.out.println(string); } } }