什么是迭代器
是一个用来遍历集合的对象。
如何获得迭代器对象
Iterator iterator()
Iterator的常用方法
-
boolean hasNext()
- 判断当前指针指向的位置是否有元素
- 如果有,则返回true,否则返回false
-
E next()
- 返回当前指针指向位置的元素,并将指针下移指向下一个元素。
迭代器的好处
- 屏蔽了众多集合的内部实现,对外提供了统一的遍历方式。
- 可以遍历所有单列的集合。
迭代过程
- 通过hasNext()方法判断当前指针指向的位置是否有元素
- 如果有元素,则调用next()方法获得该位置的元素,并将指针下移指向下一位元素。
注意事项
如果没有元素可迭代了,仍然调用next()方法会抛出异常。
并发修改异常
-
java.util.ConcurrentModificationException:并发修改异常
- Java官方规定:在使用迭代器迭代集合的过程中,不能调用集合的add,clear方法来修改集合的长度。
-
如何解决并发修改的问题
- 使用普通for遍历(要求集合有索引)
- 使用ListIterator遍历
Foreach
概述
- 增强for
- JDK1.5新特性
- 专门用来遍历数组和集合
- 本质还是迭代器。
增强for格式
for(数据类型 变量名:数组名或集合名){
}
原因
- 从1.5之后collection增加了terable接口,实现该接口允许对象成为“foreach”语句的目标
注意事项
使用增强for遍历引用数据类型时,通过引用变量修改对象的属性值会影响集合中对象的属性值。
代码说明