本帖最后由 杨佳名 于 2014-11-25 00:17 编辑
Iterator是集合的一种遍历方式。因为具体的集合不同,所采用的的数据排列方式就会不同,遍历的方式就会不一样。所以Iterator只定义成一个接口。拿ArrayList的Iterator举例,查看源码:- public interface Iterator
- {
- public abstract boolean hasNext();
- public abstract Object next();
- }
- public interface Collection
- {
- public abstract Iterator iterator();
- }
-
- public interface List extends Collection
- {
- ...
- }
-
- public class ArrayList implements List
- {
- public Iterator iterator() {
- return new Itr();
- }
- private class Itr implements Iterator {
- public boolean hasNext() {
- return xxx;
- }
- public E next() {
- return xxx;
- }
- }
- }
复制代码
其中...和xxx省略了代码中具体内容,不影响阅读就好。
可以看出,Iterator it = c.iterator(); 是把Itr对象返回来了,而Itr已经实现了Iterator接口,这里是多态的表现。也表明了,虽然每种集合的数据结构不同,但都根据自己的特点,底层实现了Iterator,所以集合都可以用Iterator来进行遍历。
|