集合遍历之Iterator与foreach

遍历集合时,我们是用iterator()还是foreach呢,今天就让我来分析下,还望各位看官多多指点一下


iterator中:

迭代器是一种模式,使得相对于序列类型的数据结构的
遍历和被遍历的对象分离
即无需关心该序列的底层结构。

Iterator提供了一种访问一个容器对象中的各个元素而又不暴露对象内部结构的方法。所以迭代器又被认为是轻量级的容器

迭代器使用的注意事项:
1.使用iterator()返回Iterator,然后通过Iterator的next()返回第一个元素

2.使用Iterator的hasNext()方法判断容器中是否还有元素。如果有,
用next()获取下一个元素

3.remove()删除迭代器返回的元素

Iterator的实现:

这里写图片描述

package iteratorExample;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {

    public static void main(String[] args){
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        //方法一:for循环
        for(int i=0;i<list.size();i++){
            System.out.print(list.get(i));
        }

        //方法二:超级for循环遍历,foreach
        for(String attr:list){
            System.out.print(attr);
        }

        //方法三:集合类的通用遍历方式iterator()
        Iterator it = list.iterator();
        while(it.hasNext()){
            System.out.print(it.next());
        }


    }
}

在这三种方式中,我们更偏向于选择iterator(),主要在于这样迭代器统一了对容器的访问方式,体现了解耦性。

较为特殊的是第二种形式,我们往往称之为增强for循环。
利用了Java语法糖,或许可以一探究竟,看它与for和iterator的关系:

反编译:

这里写图片描述

利用for循环和iterator()遍历所有元素。我们发现增强for循环根本还是iterator(),所以一定层面上说,iterator()或许是最佳实践了吧。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值