集合遍历之Iterator与foreach

来源:互联网 发布:q叔淘宝店叫什么名字 编辑:程序博客网 时间:2024/05/17 07:09

遍历集合时,我们是用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()或许是最佳实践了吧。

阅读全文
0 0
原创粉丝点击