A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘大志 中级黑马   /  2015-4-2 00:47  /  591 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

迭代器内部的源码理解:

我们知道迭代器是为了集合遍历用的一种方式,为了满足各种集合的调用,具体实现各种获取不同集合的元素的方式是不同的,如果不采用接口,显然是不合理,那既然是接口,必然要考其子类对象来实现其方法,我们猜测当一个集合调用时,其集合必有一个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(){...}
                                }
                        }

评分

参与人数 1黑马币 +10 收起 理由
随心i + 10 赞一个!挺有收获的

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马