黑马程序员技术交流社区

标题: 对迭代器源码的分析的理解 [打印本页]

作者: 刘大志    时间: 2015-4-2 00:47
标题: 对迭代器源码的分析的理解
迭代器内部的源码理解:

我们知道迭代器是为了集合遍历用的一种方式,为了满足各种集合的调用,具体实现各种获取不同集合的元素的方式是不同的,如果不采用接口,显然是不合理,那既然是接口,必然要考其子类对象来实现其方法,我们猜测当一个集合调用时,其集合必有一个iterator()方法,返回Iterator 接口类型,构成了多态,那我们就看看集合中的iterator()的方法的源代码分析。
public interface Iterator    //这就是定义的Iterator接口
{
        public abstract boolean hasNext();
        public abstract Object next();
}
?**************************************************?
public interface Collection
{
        public abstract Iterator iterator();    //这就是集合中的iterator()方法,区别Iterator接口
}

                        public interface List extends Collection
                        {
                                ...
                        }
                       
                        public class ArrayList implements List  //这就是collection的孙子类,所以实现了                                    Collection中的iterator()方法
                        {
                                public Iterator iterator()
                                {
                                        return new Itr();  //返回的是一个对象,猜猜看这是什么样的对象,肯定猜测是iterator子类对象
                                }

                                private class Itr implements Iterator    //这就是子类的具体形式。可见他是实现了Iterator,接口。所以说他是子类。重写了hasnext(),和next()方法
                                {
                                        public boolean hasNext(){...}
                                        public Object next(){...}
                                }
                        }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2