Collection接口为啥不直接继承Iterator接口

1. Iterator是做迭代的,而Iterable是提供迭代器的。
2. 如果不设置Iterator,把next,hasNext等塞到集合里,那么这个集合就有了状态,因为必须在内部记录当前游标(cursor)所在位置。
3. 这样是不合理的。如果这么做就没办法在嵌套循环时对同一个集合做循环。
4. 更别提多线程了
5. 主要原因就是上面这个,这个是“能不能”的问题,而不是“好不好”的问题,其他“因为这么做不好”的原因就不说了。

■网友
Collection是“可迭代的”,不代表它本身是一个迭代器嘛,可迭代的是说,你可以对这个类(实现了Collection接口)的对象做迭代,但是迭代器是指你迭代过程中需要用到的一个表示“迭代进度”的东西(也是一个对象)
【Collection接口为啥不直接继承Iterator接口】 如果一个对象本身也是一个迭代器,那相当于是说,这个对象同一时间只能有一个人对其做迭代,多个迭代者之间会互相干扰,比如说,一个Vector如果实现Iterator接口,那么Vector本身就有了hasNext和next方法,那这个next指的是谁的next呢,当前迭代状态存哪?

■网友
接口只能继承接口,不能继承类!


    推荐阅读