Java中的AbstractList listIterator()方法及示例
Java中的AbstractList是一个抽象类,它实现了List接口的大部分方法, 但是并没有实现其中的iterator()和listIterator()方法。这些方法留给子类来实现。在这篇文章中,我们将重点介绍AbstractList中的listIterator()方法。
listIterator()方法
listIterator()方法返回一个ListIterator对象,它允许我们对列表中的元素进行增删改查以及遍历。它与Iterator类似,但具有更强大的功能。我们可以通过该对象进行双向遍历、修改元素值并在列表特定位置添加或删除元素。
在AbstractList类中,listIterator()方法是这样定义的:
public abstract ListIterator<E> listIterator(int index);
这个方法接受一个整数参数index,表示ListIterator应该从什么位置开始迭代(默认为0)。返回的ListIterator对象包含一些可以通过它进行增删改查的方法。
我们可以通过Iterator接口实现对一个ArrayList进行遍历,但是它只支持单向遍历。因此,在需要双向遍历的业务场景中,我们就需要使用到ListIterator对象。
下面是一个示例:
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("反向输出:");
while (it.hasPrevious()) {
System.out.println(it.previous());
}
}
}
输出结果:
apple
banana
orange
pear
反向输出:
pear
orange
banana
apple
在这个示例中,我们创建了一个ArrayList对象,并添加了几个元素。然后,我们创建了一个ListIterator对象it,并使用它来进行正向遍历和反向遍历。
使用listIterator进行元素修改
我们可以通过ListIterator对象修改列表中的元素。下面的示例演示了如何通过ListIterator对象在ArrayList中添加和删除元素:
import java.util.ArrayList;
import java.util.ListIterator;
public class AddAndRemoveExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");
ListIterator<String> it = list.listIterator();
while (it.hasNext()) {
String e = it.next();
if ("banana".equals(e)) {
it.remove();
} else if ("orange".equals(e)) {
it.set("juice");
} else if ("pear".equals(e)) {
it.add("melon");
}
}
System.out.println(list);
}
}
输出结果:
[apple, juice, melon]
在这个示例中,我们首先创建了一个ArrayList对象并添加了一些元素。然后,我们使用ListIterator对象进行遍历,当遇到”banana”时,我们使用it.remove()方法将它从ArrayList中删除;当遇到”orange”时,我们使用it.set(“juice”)方法将它替换为”juice”;当遇到”pear”时,我们使用it.add(“melon”)在”orange”之前添加”melon”。
结论
listIterator()方法返回一个ListIterator对象,它允许我们对列表中的元素进行增删改查以及遍历。使用ListIterator对象,我们可以实现双向遍历并在特定位置进行元素添加和删除。这是一个非常实用的功能,在实际业务场景中也经常会用到。