【Java】增強for迴圈,三種迭代的能否刪除
1、目的:簡化陣列和Collection集合的遍歷
2、格式:
for(元素資料型別 變數 : 陣列或者Collection集合){
使用變數即可,該變數就是元素
}
3、陣列,集合儲存元素用增強for遍歷
1)陣列
int[] arr = {11,22,33,44,55};
for (int i : arr) {
System.out.println(i);
}
2)集合
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);
}
4、三種迭代的能否刪除
- 普通for迴圈,可以刪除,但是索引要--(自減),不然會邊刪集合元素在向前移動,同時指標也會向下移動,就會漏掉
- 迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會出現併發修改異常
- 增強for迴圈不能刪除,因為增強for迴圈底層用的是迭代器
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);
相關文章
- list增強for迴圈刪除元素報錯
- JAVA基礎--增強for迴圈Java
- 集合------集合框架Collection/Iterator迭代器/增強for迴圈框架
- 增強for 迴圈
- python迴圈刪除漏洞Python
- Java中的增強for迴圈(for each)的實現原理與坑Java
- 反直覺正迴圈刪除
- java基礎(三) 加強型for迴圈與IteratorJava
- Java之 迴圈(三)Java
- Java碼農必須掌握的迴圈刪除List元素的正確方法Java
- 學Java的第三週(迴圈)Java
- Python強制結束迴圈的5種方法!Python
- for迴圈無法刪除陣列所有指定元素陣列
- 增強for迴圈注意空集合問題
- Block迴圈引用的三種解決方式BloC
- 使用增強型for迴圈(for-each)相比傳統的for迴圈有什麼區別?
- 簡單理解Java中的4種迴圈Java
- Map型別的的增刪查、判斷、迴圈輸出型別
- 10.31學習日報 三種迴圈
- 增強for為什麼不能刪除集合裡的元素
- Python 中刪除列表元素的三種方法Python
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- list中for迴圈刪除多個元素為何報錯?
- Go 陷阱之 for 迴圈迭代變數Go變數
- c語言中的三種迴圈語句結構C語言
- 前端 JavaScript 中的三種 for 迴圈語句總結前端JavaScript
- Java迴圈Java
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 在ArrayList的迴圈中刪除元素,會不會出現問題?
- 單向迴圈連結串列——查詢、刪除、插入結點
- Day3-水仙花和三種迴圈
- 探討兩種迴圈表示方法的區別,while迴圈與for迴圈的小總結While
- 在迴圈陣列時使用splice()方法刪除陣列遇到的問題陣列
- linux的刪除檔案命令和強制刪除命令Linux
- 迴圈(Java篇)Java
- 簡單介紹Lua中三種迴圈語句的使用
- 【重溫基礎】3.迴圈和迭代
- [轉帖]Redis中刪除過期Key的三種策略Redis