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)








posted @ 2018-02-06 14:32  一锤子技术员  阅读(5)  评论(0编辑  收藏  举报  来源