📅  最后修改于: 2023-12-03 14:42:15.140000             🧑  作者: Mango
Java ListIterator接口提供了一种在集合中迭代元素的方式,它继承了Iterator接口并扩展了其功能。ListIterator只能用于List集合,它允许我们在迭代时添加、删除和修改元素,而且可以在迭代过程中双向移动。
public interface ListIterator<E> extends Iterator<E> {
boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);
}
boolean hasNext()
: 如果迭代器有更多的元素,就返回 true。E next()
: 返回迭代器中的下一个元素。List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
boolean hasPrevious()
: 如果列表迭代器在列表中有更多的元素,则返回 true。E previous()
: 返回列表中的上一个元素。List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
ListIterator<String> iterator = list.listIterator(list.size());
while (iterator.hasPrevious()) {
String element = iterator.previous();
System.out.println(element);
}
int nextIndex()
: 返回迭代器在列表中的下一个元素的索引。int previousIndex()
: 返回迭代器在列表中的上一个元素的索引。List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
int index = iterator.nextIndex();
String element = iterator.next();
System.out.println(index + ": " + element);
}
void remove()
: 删除列表中迭代器返回的最后一个元素。List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext()) {
String element = iterator.next();
if (element.equalsIgnoreCase("Java")) {
iterator.remove();
}
}
System.out.println(list); // output: [Python, Ruby]
void set(E e)
: 用指定的元素替换列表中迭代器返回的最后一个元素。void add(E e)
: 将指定的元素插入列表中。List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext()) {
String element = iterator.next();
if (element.equalsIgnoreCase("Python")) {
iterator.set("JavaScript");
} else if (element.equalsIgnoreCase("Ruby")) {
iterator.add("Go");
}
}
System.out.println(list); // output: [Java, JavaScript, Go, Ruby]