迭代器其实就是将遍历的方法封装起来
比如你想遍历数组就要用下标,那么遍历ArrayList,LinkedList,HashSet等集合是不是应该都有自己的不同的遍历方式?
如果每个几个集合的遍历方式都不同,使用起来是不是很麻烦很痛苦,因为你要记住每个集合的遍历方式
所以定义一个Iterator接口,每个集合都用自己的方式复写hasNext() 、next() 、remove() 三个方法,要遍历的时候直接使用迭代器就可以了,其实这里用的是多态,父类(Iterator)的引用指向子类的实例(如ArrayList的实例等)。
这样每次你要遍历,用Iterator就可以了,不是简单多了。
其实毕向东老师关于这个问题已经说得很明白了,操作杆(Iterator)——夹子(每个集合的具体方法)的比喻非常贴切。操作的时候只管拿操作杆,夹子长什么样不用管。 |