Java ListIterator 接口
ListIterator 接口定义了列表集合的迭代器,可以前后两个方向迭代,并可以在迭代过程中修改列表数据。在本教程中,我们将通过示例了解 Java ListIterator 接口。
在本教程中,我们将通过示例了解 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()
方法正向遍历 ArrayList
对象。
import java.util.ArrayList;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
// 返回 numbers 的迭代器
ListIterator<Integer> iterate = numbers.listIterator();
// 使用 next() 方法
int number1 = iterate.next();
System.out.println("下一个元素: " + number1);
// 使用 nextIndex() 方法
int index1 = iterate.nextIndex();
System.out.println("下一个元素的索引: " + index1);number1 = iterate.next();
System.out.println("下一个元素: " + number1);
// 使用 hasNext() 方法
System.out.println("还有下一个元素吗? " + iterate.hasNext());
}
}
输出
ArrayList: [1, 3, 2]
下一个元素: 1
下一个元素的索引: 1
还有下一个元素吗? true
示例 2:ListIterator 反向遍历
在下面的示例中,我们使用 ListIterator
的 previous()
和 previousIndex()
方法反向遍历 ArrayList
对象。
import java.util.ArrayList;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
// 返回 numbers 的迭代器
ListIterator<Integer> iterate = numbers.listIterator();
iterate.next();
iterate.next();
// 使用 previous() 方法
int number1 = iterate.previous();
System.out.println("上一个元素: " + number1);
// Using the previousIndex()
int index1 = iterate.previousIndex();
System.out.println("上一个元素的索引: " + index1);
}
}
输出
ArrayList: [1, 3, 2]
上一个元素: 3
上一个元素的索引: 0
在上面的例子中,ListIterator
对象最早的位置在 1
之前。由于 1
之前没有元素,如果调用 previous()
方法会抛出异常。
然后我们调用 next()
方法 2 次,现在 ListIterator
对象的位置介于元素 3
和 2
之间。
然后,调用 previous()
方法返回 3
。