三種疊代能否删除元素
(1)普通for循環,可以删除,但是索引要–。
(2)疊代器,可以删除,但是必須使用疊代器自身的remove方法,否則會出現并發修改異常。
(3)增強for循環不能删除。
代碼示範
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo1_Foreach {
/**
* A:增強for概述
* 簡化數組和Collection集合的周遊
* B:格式
* for(元素資料類型 變量:資料或者Collection集合){
*
* 使用變量即可,該變量就是元素
* }
* C:案例示範
* 數組,集合存儲元素用增強for周遊
*
* D:好處
* 簡化周遊
* 增強for循環底層依賴的是疊代器(Iterator)
*/
public static void main(String[] args){
int[] arr = {11,22,33,44};
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 str : list){
System.out.print(str + "....");
}
System.out.println();
//1,普通for循環删除,索引要--
for(int i = 0; i < list.size(); i ++) {
if("b".equals(list.get(i))) {
list.remove(i--);//通過索引删除元素
}
}
System.out.println(list);
//2,疊代器删除
/*Iterator 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(String str : list) {
if("b".equals(str)) {
list.remove(str);
}
}
}
}