java对迭代器的定义:
(1)集合Collection的实现类(List/Set)以及子类,都拥有一个方法:Iterator<E> iterator()
(2)Iterator是集合框架中独立的一个接口。java对Iterator是这样定义的:
对 collection 进行迭代的迭代器。
(3)由API可以看出来,是Collection实现了Iterator接口。
(4)迭代器的泛型指定必须与应用他的集合泛型相同。
迭代提供的方法:
(1)Object next():返回迭代器刚越过的元素的引用,返回值是Object
(2)boolean hasNext():判断容器内是否还有可供访问的元素
(3)void remove():删除迭代器刚越过的元素
可以看出迭代器初始指的为位置为集合的首元素之前,使用一次next()方法将越过第一元素,指向第二个之前。而对应remove方法则删除的是刚越过的那个元素:
Iterator<String> it = c.iterator();
it.next();
it.remove()
集合中迭代方法:
方法1:for循环
for(Iterator<String> it = c.iterator();it.hasNext();){
}
方法2:while循环
Iterator<String> it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
两者差异在于前者把Iterator定义为局部变量,用完即释放;而后者则定义为成员变量,需要等该方法运行完菜释放;由此可见推荐使用方法1.
网友评论