Iterator接口也是java集合框架的成员,但它与Collection、Map系列的集合不一样。Collection、Map系列集合用于盛装对象,而Iterator用于遍历集合中的元素,所以Iterator对象也被称为迭代器。
Iterator接口定义了一下方法:
1、 boolean hashNext():如果迭代的集合元素还没被遍历,则返回true
2、 Object next():返回集合里下一个元素。
3、Void remove():删除集合里上一次next方法返回的元素。
public static void main(String[] args) {
Collection c1=new HashSet();
c1.add("孙悟空");
c1.add("猪八戒");
c1.add("唐三藏");
Iterator it=c1.iterator(); //获取c1集合对应的迭代器
while(it.hasNext()){
String book=(String)it.next(); //it.next()返回的是object类型,需要强转
System.out.println(book);
if(book.equals("唐三藏")){
it.remove(); //从集合中删除上一次next方法返回的元素
}
}
System.out.println(c1);
}
1、Iterator必须依附于Collection对象,有一个Iterator对象就必然有一个与之关联的Collection对象
2、当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素传给了迭代变量,只是把元素的值传给了变量,所以修改迭代变量的值对集合元素本身没有任何改变。
3、当使用Iterator或foreach语句来反问Collection集合时,collection里的元素不能被改变,否则会引起java.util.ConcurrentModificationException异常。
使用foreacn循环遍历集合元素:
public static void main(String[] args) {
Collection c1=new HashSet();
c1.add("孙悟空");
c1.add("猪八戒");
c1.add("唐三藏");
Iterator it=c1.iterator(); //获取c1集合对应的迭代器
for(Object obj:c1){ //使用foreach语句遍历
String book=(String)obj;
System.out.println(book);
}
}
}