Java中List的三种循环

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

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

fori循环

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

foreach循环

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

Iterator循环

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

思考 如何在list的循环中安全的删除元素

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

总结

三种循环性能上有所差异,但是在遍历是删除元素应当使用Iterator迭代器!!


文章并不完善,请大佬指点!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容