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