Java中List的三種循環(huán)

在Java中List有三種遍歷方式,1.fori,2.foreach,3.Iterator

List<String> listTest = new ArrayList<>(8);

fori循環(huán)

int size = listTest.size();
for (int i = 0; i < size; i++) {
     System.out.println("fori:"+listTest.get(i));
}

foreach循環(huán)

for (String str:listTest) {
     System.out.println("foreach:"+str);
}

Iterator循環(huán)

Iterator iterator = listTest.iterator();
while (iterator.hasNext()){
    System.out.println("Iterator:"+iterator.next());
}

思考 如何在list的循環(huán)中安全的刪除元素

1.fori中刪除

int size = listTest.size();
for (int i = 0; i < size; i++) {
    System.out.println("fori:" + listTest.get(i));
    listTest.remove(i);
}
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.rangeCheck(ArrayList.java:657)
    at java.util.ArrayList.get(ArrayList.java:433)

2. foreach中刪除

for (String str : listTest) {
    listTest.remove(str);
    System.out.println("foreach:" + str);
}
java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    at java.util.ArrayList$Itr.next(ArrayList.java:859)

3. Iterator中刪除

Iterator iterator = listTest.iterator();
while (iterator.hasNext()) {
    System.out.println("Iterator:" + iterator.next());
    iterator.remove();
}
Iterator:a
Iterator:b
Iterator:c
Iterator:d
Iterator:e
Iterator:f
Iterator:g

總結

三種循環(huán)性能上有所差異,但是在遍歷是刪除元素應當使用Iterator迭代器!!


文章并不完善,請大佬指點??!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容