迭代器
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。
迭代器模式(Iterator Pattern) :它提供一种方式访问一个容器对象的各个元素,而又不需暴露该对象的内部细节。
Java迭代器相关类
1.java.util.Iterator
在Java中Iterator为一个接口,它只提供了迭代器的基本规则。主要提供了以下4个方法
2.Iteratable接口
Java中还提供了一个Iterable接口,Iterable接口实现后的功能是‘返回’一个迭代器,我们常用的实现了该接口的子接口有:Collection、List、Set等。该接口的iterator()方法返回一个标准的Iterator实现。实现Iterable接口允许对象成为Foreach语句的目标,就可以通过foreach语句来遍历你的底层序列。
3.迭代器的使用
/**
* Returns the next element in the iteration.
*
* @return the next element in the iteration
* @throws NoSuchElementException if the iteration has no more elements
*/
E next();
next()方法:一开始迭代器在所有元素的左边,调用next()之后,迭代器会移到第一个和第二个元素之间,next()方法返回迭代器刚刚经过的元素。next方法不仅会移动迭代器,并且会返回经过的元素,如果没有元素,会抛出NoSuchElementException
迭代器的使用主要有以下三个方面的注意事项:
使用容器的iterator()方法返回一个Iterator对象,然后通过Iterator的next()方法返回第一个元素。
使用Iterator的hasNext()方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。
可以通过remove()方法删除迭代器返回的元素。
自定义迭代器
自定义迭代器只需要实现Iterable接口,重写iterator()方法,iterator()返回我们自己定义的迭代器(实现Iterator接口的类)