Iterator迭代器
Iterator(迭代器)是一个接口,它的作用就是遍历容器的所有
方法 | 作用 |
---|---|
boolean hasNext() | 如果被迭代的集合元素还没有被遍历完,则返回 true。 |
Object next() | 返回集合里的下一个元素。 |
void remove() | 删除集合里上一次 next 方法返回的元素。 |
public static void main(String[] args) {
//创建一个Collection对象
Collection collection = new ArrayList();
//Collection接口中的方法 添加元素
collection.add("Hello");
collection.add(123);//自动装箱 对应的基本类型的包装类
collection.add(true);
collection.add("world");
collection.add("hello");
collection.add(false);
Student stu1 = new Student("张三",18);
collection.add(stu1);
// 迭代器迭代集合
Iterator iter = collection.iterator();
// 使用迭代器来迭代集合
while(iter.hasNext()){
Object obj = iter.next();
System.out.println(obj);
}
}
当使用 Iterator 迭代访问 Collection 集合元素时,Collection 集合里的元素不能被改变,只有通过 Iterator 的 remove() 方法删除上一次 next() 方法返回的集合元素才可以,否则将会引发“java.util.ConcurrentModificationException”异常。
public static void main(String[] args) {
List list = new ArrayList();
list.add("hello");
list.add("world");
list.add("java");
Iterator iter = list.iterator();
while(iter.hasNext()){
Object obj = iter.next();
String str = (String) obj;
if(str.equals("world")){
list.add("hadoop");
}
}
}
通过集合本身来进行遍历集合,由集合自己修改 ,否则一旦在迭代过程中检测到该集合已经被修改(通常是程序中的其他线程修改),程序立即引发 ConcurrentModificationException 异常,