我是靠谱客的博主 含蓄白开水,这篇文章主要介绍for,foreach,iterator区别,现在分享给大家,希望可以做个参考。

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

1.for

复制代码
1
2
3
4
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

复制代码
1
2
3
4
for(E i:list){ ... }

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

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

3.iterator

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.性能比较

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

最后

以上就是含蓄白开水最近收集整理的关于for,foreach,iterator区别的全部内容,更多相关for内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部