java 集合迭代器 ListIterator

根据官方文档介绍, ListIterator 有以下功能:

  1. 允许我们向前、向后两个方向遍历 List;
  2. 在遍历时修改 List 的元素;
  3. 遍历时获取迭代器当前游标所在位置。

注意,迭代器 没有当前所在元素一说,它只有一个游标( cursor )的概念,这个游标总是在元素之间

注意,迭代器 没有当前所在元素一说,它只有一个游标( cursor )的概念,这个游标总是在元素之间;

比如 集合元素有1、2、3、4、5;
初始游标就在1的前边
当调用next()游标后移一位
调用orevious()游标回到当前位置
遍历完元素后 游标会在最后一个元素的后边
也就是说如果集合长度为N 那么游标的位置就有N+1个


ListIterator 继承自Iterator ,在Iterator 的基础上添加了6个方法

void hasPrevious()

判断游标前面是否有元素;

Object previous()

返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;

int nextIndex()

返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;

int previousIndex()

返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;

void add(E)

在游标 前面 插入一个元素
注意,是前面

void set(E)

更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回 的元素。
注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;

void remove()

删除迭代器最后一次操作的元素,注意事项和 set 一样。


ListIterator 有两种获取方式

  • List.listIterator()
  • List.listIterator(int location)

区别在于第二种可以指定 游标的所在位置。

你可能感兴趣的:(java 集合迭代器 ListIterator)