1. 程式人生 > >三種迭代的能否刪除

三種迭代的能否刪除

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);
		}
	}

}