在本教程中,我们将借助示例学习Java ListIterator接口。
Java集合框架的接口ListIterator提供了访问列表元素的功能。
它是双向的。 这意味着它允许我们在两个方向上迭代列表的元素。
它继承了Iterator接口。
List接口提供了ListIterator()方法,该方法返回ListIterator接口的实例。
ListIterator的方法
ListIterator接口提供了可用于对列表元素执行各种操作的方法。
hasNext() - 如果列表中存在元素,则返回true
next() - 返回列表的下一个元素
nextIndex() - 返回next()方法将返回的元素的索引
previous() - 返回列表的前一个元素
previousIndex()- 返回previous()方法将返回的元素的索引
remove()- 删除由next()或previous()返回的元素
set() - 将next()或previous()返回的元素替换为指定的元素
示例1: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
示例2: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。