Java学习手册:迭代器(Iterator)


集合提供了统一的遍历方式:迭代器。迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器对象中的各个元素,而又不暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。

迭代器的使用主要有以下3个方面的注意事项:
(1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next() 方法返回第一个元素。
(2)使用Iterator的hasNext() 方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。(使用next()的前提是必须有hasNext(),并且返回值为true)
(3)可以通过remove() 方法删除迭代器返回的元素。(非必须)

Iterator支持派生的兄弟成员。ListIterator只存在于List中,支持在迭代期间向List中添加或删除元素,并且可以在List中双向滚动。

Iterator接口的操作原理:Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。

package com.haobi;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/*
 * 迭代器
 */
public class IteratorDemo {
	public static void main(String[] args) {
		List<String> list = new LinkedList<String>();
		list.add("first");
		list.add("second");
		list.add("third");
		list.add("fourth");
		for(Iterator<String> iter = list.iterator();iter.hasNext();) {
			String str = (String)iter.next();
			System.out.println(str);
		}
	}
}
//程序输出结果如下:
first
second
third
fourth

在使用iterator()方法时经常会遇到ConcurrentModificationException异常,这通常是由于在使用Iterator遍历容器的同时又对容器做增加或删除操作所导致的,或者由于多线程操作导致,当一个线程使用迭代器遍历容器的同时,另一个线程对这个容器进行增加或删除操作。

解决方法如下:在遍历的过程中把需要删除的对象保存到一个集合中,等遍历结束后再调用removeAll()方法来删除,或者使用iter.remove()方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值