ListIterator是列表的迭代器,允许在任一方向上遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。
Java集合框架的接口ListIterator提供了访问列表元素的功能。
它是双向的, 这意味着它允许我们在两个方向上迭代列表的元素。
它继承了Iterator接口。
List接口提供了ListIterator()方法,该方法返回ListIterator接口的实例。
ListIterator的方法
ListIterator接口提供了可用于对列表元素执行各种操作的方法。
hasNext() - 如果列表中存在元素,则返回true
next() - 返回列表的下一个元素
nextIndex() - 返回next()方法将返回的元素的索引
previous() - 返回列表的前一个元素
previousIndex()- 返回previous()方法将返回的元素的索引
remove()- 删除由next()或previous()返回的元素
set() - 将next()或previous()返回的元素替换为指定的元素
示例:ListIterator的实现
在下面的示例中,我们在一个数组列表中实现了ListIterator接口的next()、nextIndex()和hasNext()方法。
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
//创建一个ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
//创建ListIterator的实例
ListIterator<Integer> iterate = numbers.listIterator();
//使用next()方法
int number1 = iterate.next();
System.out.println("下一元素: " + number1);
//使用nextIndex()
int index1 = iterate.nextIndex();
System.out.println("下一元素位置: " + index1);
//使用hasNext()方法
System.out.println("还有下一个元素吗? " + iterate.hasNext());
}
}
输出结果
ArrayList: [1, 3, 2]
下一元素: 1
下一元素位置: 1
还有下一个元素吗? true
示例:ListIterator的实现
在下面的示例中,我们在数组列表中实现了ListIterator接口的previous()和previousIndex()方法。
import java.util.ArrayList;
import java.util.ListIterator;
class Main {
public static void main(String[] args) {
//创建一个ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
//创建ListIterator的实例
ListIterator<Integer> iterate = numbers.listIterator();
iterate.next();
iterate.next();
//使用previous()方法
int number1 = iterate.previous();
System.out.println("上一个元素: " + number1);
//使用previousIndex ()
int index1 = iterate.previousIndex();
System.out.println("上一个元素的位置: " + index1);
}
}
输出结果
ArrayList: [1, 3, 2]
上一个元素: 3
上一个元素的位置: 0
在上面的实例中,最初迭代器的实例在1之前。因为在1之前没有元素,所以调用previous()方法将抛出异常。
然后,我们使用了next()2次方法。现在Iterator实例将在3到2之间。
因此,previous()方法返回3。