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 数据修改比较快
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值