【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

【Java】Java容器类(五),深入理解迭代器

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


//以上就是迭代器的知识了,希望能够帮助到大家。

相关文章: