迭代器(Iterator)
1.相关概念
1.1迭代器Iterator:一个集合的迭代器。 专门实现集合遍历。Iterator需要的地方Enumeration在Java集合框架。
1.2迭代器有两种不同的枚举方式:
(1)迭代器允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。
(2)方法名称得到改进。
1.3三种方法
(1)boolean hasNext()
如果迭代具有更多的元素,则返回true 。 (换句话说,如果next()返回一个元素而不是抛出一个异常,则返回true )
结果:true如果迭代有更多的元素
(2)E next()
返回迭代中的下一个元素。
结果:迭代中的下一个元素
异常:NoSuchElementException - 如果迭代没有更多的元素
(3)default void remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 此方法只能调用一次next()。 如果底层集合在迭代过程中以任何方式进行修改而不是通过调用此方法,则迭代器的行为是未指定的。
实现要求:默认的实现抛出的一个实例UnsupportedOperationException并执行其他操作。
异常:
UnsupportedOperationException -如果 remove操作不会被这个迭代器支持
IllegalStateException - 如果 next方法尚未被调用,或者 remove方法在上次调用 next方法之后已经被调用
1.4迭代器的两个作用:
(1)为了统一接口的遍历方式:
顺序表还是链表,遍历方式是一致的,用户不需要关心内部实现(封装性)
(2)可以删除元素
2.用法
package list;
public interface Iterator{
//判断迭代器是否走到了线性表最后
boolean hasNext();
//1.让迭代器往后走一步;2.返回当前值
int next();
//删除当前迭代器代表的值
int remove();
}
3.了解Iterator和foreach的关系
for(int a:容器){
}
只要类实现了Iterator接口,就可以被foreach语法使用了
(迭代器的语法糖)