3、两种遍历集合的方法Iterator接口和foreach循环

    1、Iterator接口

 Iterator也是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。

提供的三种方法:

boolean hasNext():返回集合里的下一个元素。

Object next():返回集合里下一个元素。

void remove();删除集合里上一次next方法返回的元素。

 

复制代码
public class TestIterator 
{
public static void main(String[] args)
{
//创建一个集合
Collection books = new HashSet();


books.add("轻量级J2EE企业应用实战");
books.add("Struts2权威指南");
books.add("基于J2EE的Ajax宝典");

//获取books集合对应的迭代器
Iterator it = books.iterator();


while(it.hasNext())
{
       //未使用泛型,需要强制转换
String book = (String)it.next();

System.out.println(book);

if (book.equals("Struts2权威指南"))
{
it.remove();

    //使用Iterator迭代过程中,不可修改集合元素,下面代码引发异常
    //books.remove(book);

}


//对book变量赋值,不会改变集合元素本身
book = "测试字符串";


}
System.out.println(books);
}
}
复制代码

 

程序运行结果:

Struts2权威指南 
基于J2EE的Ajax宝典 
轻量级J2EE企业应用实战 
[基于J2EE的Ajax宝典, 轻量级J2EE企业应用实战]


说明:

(1)通过语句“book = "测试字符串"; ”对迭代变量book进行赋值时,当我们再次输出books集合时,集合里的元素没有任何变化。即当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给迭代变量,而是把集合元素的值传给了迭代变量。

(2)当使用Iterator来访问Collection集合元素时,只有通过Iterator的remove方法删除(it.remove();)上一次next方法返回的集合元素才可以给集合中添加元素(book = "测试字符串"; )。否则引发java.util.ConcurrentModificationExcption异常。