我是靠谱客的博主 含蓄白开水,最近开发中收集的这篇文章主要介绍for,foreach,iterator区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

for,foreach,和iterator都是可以用来遍历数组和集合

1.for

for(int i=0;i<list.size();i++){
    ...
}

1.1必要条件: 集合或数组的大小,有序的,不然无法遍历;

1.2使用for循环时,在循环内使用list.remove()会导致错误,可以使用如下方法:
for(int i = 0; i < list.size();i++){
if(true){
list.remove(list.get(i));
–i;//remove的同时下标跟着减
}
}

2.foreach

for(E i:list){
    ...
}

2.1必要条件: 集合或数组的类型

2.2forEach就是为了让用iterator循环访问的形式简单,写起来更方便。不能执行集合删除操作

3.iterator

Iterator it = list.iterator();
while(it.hasNext()){ 
    object o =it.next(); 
    ...
}
iterator是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素,
举个例子:
    public void display(Iterator<object> it){
        while(it.hasNext()){
            system.out.print(it.next()+"");
        }
    }
一个方法可以遍历不同的集合,迭代器统一了对容器的访问方式,能够将遍历序列的操作与序列底层的              
结构分离,这也是接口的解耦的最好体现。体现了JAVA的多态性。

4.性能比较

采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法(可以按下标查询),因此在ArrayList里,for循环较快
采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法(先找到其前一个记录的位置才能够找到当前记录),因此在LinkedList里,使用iterator较快
从数据结构角度分析,for循环适合访问顺序结构,可以根据下标快速获取指定元素.
而Iterator 适合访问链式结构,因为迭代器是通过next()和Pre()来定位的.可以访问没有顺序的集合. 
Iterator 数据修改比较快

最后

以上就是含蓄白开水为你收集整理的for,foreach,iterator区别的全部内容,希望文章能够帮你解决for,foreach,iterator区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部