Iterator接口中有三个方法hasNext(),next(),remove(),按照接口的规定实现它的类必须实现该接口的全部对象。那么ArrayList,LinkList,HashSet等都是实现了该Iterator接口,怎么不用实现该三个方法呢,取而代之的是iterator()方法,遍历是通过她的返回对象条用hasNext(),next(),remove()。究竟是为什么呢!!
调试欢乐多
java.lang.Object
extended by java.util.AbstractCollection<E>
extended by java.util.AbstractList<E>
extended by java.util.ArrayList<E>
ArrrayList继承了AbstractCollection
而AbstractCollection则实现了Iterator接口
java.lang.Object
extended by java.util.AbstractCollection<E>
extended by java.util.AbstractSet<E>
extended by java.util.HashSet<E>
java.lang.Object
extended by java.util.AbstractCollection<E>
extended by java.util.AbstractList<E>
extended by java.util.AbstractSequentialList<E>
extended by java.util.LinkedList<E>也是一样
而AbstractCollection则实现了Iterator接口
说明了你的疑惑。
hasNext() 遍历一遍之后就不能遍历了。
但是如果用一个方法返回一个对象来遍历,那么遍历完之后就可以舍弃这个对象。重新生成一个对象进行遍历。