日期:2014-05-20  浏览次数:20735 次

请教 集合中的Iterator接口
请问,集合里的那个Iterator接口中的三个方法:remove,hasnext,next.好象没有看到有哪一个类实现过,那怎么,这些方法都可以那出来用呢??

------解决方案--------------------
public interface ListIterator<E>extends Iterator<E>
注意,remove() 和 set(Object) 方法不是 根据光标位置定义的;它们是根据对调用 next() 或 previous() 所返回的最后一个元素的操作定义的。 

此接口是 Java Collections Framework 的成员。 



从以下版本开始: 
1.2 
另请参见:
Collection, List, Iterator, Enumeration

------解决方案--------------------
集合类基本上都实现了,在遍历的时候都会用到Iterator迭代器。
比如:ArrayList,HashSet,HastTable,Vector 
例如:
List list=new ArrayList();
for(int i=0;i<10;i++){
list.add(i);
}
Iterator iterator=list.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+" ");
}

remove()方法是:从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
------解决方案--------------------
remove,hasnext,next 这三个方法都是由Iterator各个子类去实现的,咱们看不到,每一个子类针对某一种的集合类去遍历
比如:ArrayList 类,它的iterator()方法可以得到的是java.util.AbstractList$Itr 一个内部类
   LinkedList类,它的iterator()方法可以得到的是java.util.LinkedList$ListItr 一个内部类
   HashSet类,它的iterator()方法可以得到的是java.util.HashMap$KeyIterator 一个内部类
这些内部类都实现了Iterator接口,每个实现类的remove,hasnext,next这三个方法实现都是不同的,
只不过是咱们一般是通过多态特性来操作这些类,所以都是用Iterator接口引用去指向各个子类对象