概述
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区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复