ListIterator双向迭代输出
使用Iterator进行迭代输出有一个特点:只允许由前向后输出实现输出,而如果现在需要双向迭代输出,那么就必须依靠Iterator子接口:ListIterator接口来实现。
如果要想获取ListIterator接口对象,Collection并没有定义相关的方法,但是List子接口有,也就是说这歌输出接口是专门为List集合准备的。
在ListInterator中有如下方法:
- 是否有前一元素:boolean hasPrevious();
- 返回列表中的上一个元素并向后移动光标位置:E previous();
范例:实现双向迭代
import java.util.*;
public class IteratorDemo {
public static void main(String[] args) {
List<String> list= new ArrayList <String>();
list.add("Hello");
list.add("word");
list.add("你好,");
list.add("世界!");
ListIterator<String> iterator = list.listIterator(); //获取迭代器
System.out.println("-----------------------由前向后输出-------------------------");
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("-----------------------由后向前输出-------------------------");
while (iterator.hasPrevious()) {
System.out.println(iterator.previous());
}
System.out.println();
}
}
-----------------------由前向后输出-------------------------
Hello
word
你好,
世界!
-----------------------由后向前输出-------------------------
世界!
你好,
word
Hello
如果想要实现由后向前的遍历,那么首先要实现的是由前向后实现遍历处理,此时如果删除
System.out.println("-----------------------由前向后输出-------------------------");
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
这段代码,由后向前的数据将不会被输出。