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)