for,foreach,和iterator都是可以用来遍历数组和集合
1.for
复制代码
1
2
3
4for(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
4for(E i:list){ ... }
2.1必要条件: 集合或数组的类型
2.2forEach就是为了让用iterator循环访问的形式简单,写起来更方便。不能执行集合删除操作
3.iterator
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Iterator 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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复