Java集合框架学习(十四) Iterator接口详解

Iterator接口介绍



public interface Iterator<E>


iterator 用于迭代集合类型对象,例如: HashMap, ArrayList, LinkedList 等。

Iterator 设计用于在集合框架中取代 Enumeration。



Iterators 和 enumerations的2点区别:


1)Iterators 允许在迭代集合元素过程中移除元素

2)改进了方法名




Iterator接口定义


   
public interface Iterator {  
      boolean hasNext();  
      Object next();  
      void remove();  

    }  




使用:


Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型


boolean hasNext():判断容器内是否还有可供访问的元素


void remove():删除迭代器刚越过的元素


迭代使用方法:(迭代其实可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类)


for(Iterator it = c.iterator(); it.hasNext(); ) { 

  Object o = it.next(); 
   //do something  

}  




例子介绍:


import java.util.ArrayList;
import java.util.Iterator;
 
public class IteratorDemo {
  public static void main(String args[]){
    ArrayList<String> names = new ArrayList<String>();
    names.add("Chaitanya");
    names.add("Steve");
    names.add("Jack");
 
    Iterator<String> it = names.iterator();
 
    while(it.hasNext()) {
      String obj = it.next();
      System.out.println(obj);
    }
 }
}




ConcurrentModificationException介绍



当集合正在被迭代时如果试图修改集合元素就会抛出该异常。


import java.util.ArrayList;
public class ExceptionDemo {
  public static void main(String args[]){
     ArrayList<String> books = new ArrayList<String>();
     books.add("C");
     books.add("Java");
     books.add("Cobol");
 
     for(String obj : books) {
        System.out.println(obj);
        //We are adding element while iterating list
        books.add("C++");
     }
  }

}



Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at beginnersbook.com.Details.main(Details.java:12)








  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值