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异常。
转载于:https://blog.51cto.com/zqaha/1028798