【Java】Java容器类(五),深入理解迭代器
建议整个系列一起看(更新中):
增强for: https://blog.csdn.net/qq_45495857/article/details/109410980
泛型:https://blog.csdn.net/qq_45495857/article/details/109410912
Java容器篇(一),宏观了解:https://blog.csdn.net/qq_45495857/article/details/109524162
Java容器篇(二),深入理解List集合类: https://blog.csdn.net/qq_45495857/article/details/109529618
Java容器类(三),深入理解Set集合类: https://blog.csdn.net/qq_45495857/article/details/109536611
Java容器类(四),深入理解Map集合类https://blog.csdn.net/qq_45495857/article/details/109542428
Java容器类(五),深入理解迭代器: https://blog.csdn.net/qq_45495857/article/details/109548598
Iterator接口
任何容器类,都必须有某种方式可以插入元素并将他们再次取回,毕竟,持有事务是容器最基本的工作。
从更高层角度思考,就会发现有个缺点,要使用容器,必须对容器的确切类型编程,既不知道容器元素的类型,或根本不关心容器的类型,我们如何才能不重写代码就可以引用于不同类型的容器?
迭代器(也是一种设计模式)的概念就可以用于达成此目的。迭代器是一个对象,它的工作是遍历并>选择序列中的对象,而客户端程序员不必知道或关心序列底层的结构。
此外迭代器同城被称为轻量级对象,创建它的代价很少
Iterator 只能单向移动
- 使用方法
iterator()要求容器返回一个Iterator.Iterator将准备好返回序列的第一个元素 - 使用
next()活得序列中的下一个元素 - 使用
hasNext()检查序列中是否还有元素 - 使用
remove()将迭代器新近返回的元素删除
ListIterator
- ListIterator是一个更加强大的Iterator的子类型,它只能用于各种List类的访问。
- 尽管Iterator只能向前移动,但是ListIterator可以双向移动
独特方法:
-
void add(E e)将指定的元素插入列表(可选操作) -
boolean hasPrevious()检查上一个索引位置是否有元素 -
int nextIndex()返回随后调用next()返回的元素的索引 -
E previous()返回列表中的上一个元素,并向后移动光标位置 -
int previousIndex()返回由后续调用previous()返回的元素的索引。 -
void set(E e)用指定元素替换由next()或 previous()返回的最后一个元素(可选操作)
你可以调用listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator
//以上就是迭代器的知识了,希望能够帮助到大家。