Iterater接口是Java集合框架的成员,Iterater对象被称为迭代器,主要用于遍历Collection集合中的元素。它定义了三个方法:boolean hasNext(),Object next(),void remove();当使用Iterater来迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只有通过Iterater的remove方法来删除上一次next方法返回的集合元素,
//获取books集合对应的迭代器
Iterator it = books.iterator();
while(it.hasNext())
{
String book = (String)it.next();
System.out.println(book);
if (book.equals("JavaEE"))
{
//从集合中删除上一次next返回的元素
it.remove();
//使用Iterator迭代过程中,不可修改集合元素,下面代码引发异常
//books.remove(book);
}
}
foreach循环访问集合元素更简洁,但foreach循环中的迭代变量也不是集合元素本身,系统只是把集合元素的值赋给迭代变量,修改迭代变量的值没有意义,当集合的元素被改变时也会引发异常。
for (Object obj : books)
{
String book = (String)obj;
System.out.println(book);
if (book.equals("JavaEE"))
{
//下面代码会引发ConcurrentModificationException异常
books.remove(book);
}
}
|