java:集合输出之Iterator和ListIterator二
ListIterator是Iterator的子接口,Iterator的最大特点是,能向前,或向后迭代。如果现在要想双向输出的话,则只能使用ListIterator接口,此接口有一个要求,即只能输出List接口里面的内容。因此用到public ListIterator<E> extends Iterator<E>:
add(E e): 增加数据
boolean hasNext(); 继承Iterator ,下一个元素是否存在,
next(); 继承Iterator,获取下一个元素内容
previous();继承Iterator,获取上一个元素内容
remove();删除 下一个或上一个元素
set(E e);用指定元素替换下一个或上一个元素内容;
// TODO 自动生成的方法存根 List<String> allList = new ArrayList<String>(); allList.add("A"); allList.add("B"); allList.add("C"); allList.add("D"); allList.add("E"); ListIterator<String> iter = allList.listIterator(); System.out.println("向前输出"); while(iter.hasNext()) { //向前输出 System.out.println(iter.next() + "、"); } //向后输出 System.out.println("向后输出"); while(iter.hasPrevious()) { System.out.println(iter.previous()); }
输出结果:
向前输出 A、 B、 C、 D、 E、 向后输出 E D C B A
如果想要双向输出,则首先一定要保证先执行由前向后的输出操作。单独执行向后输出,是没有内容输出的。
在使用ListIterator接口的时候,还有最大一个特点,可以增加修改数据。
List<String> allList = new ArrayList<String>(); allList.add("A"); allList.add("B"); allList.add("C"); allList.add("D"); allList.add("E"); ListIterator<String> iter = allList.listIterator(); //增加数据,此方法只有由前向后输出才有新增加的值 iter.add("X"); System.out.println("向前输出"); while(iter.hasNext()) { //再此修改的数据,也只有由前向后输出的内容才有 String str = iter.next(); iter.set(str + " - drw"); //向前输出 System.out.print( str + "、"); } //向后输出 System.out.println(" 向后输出"); while(iter.hasPrevious()) { System.out.print(iter.previous()+"、"); }
结果为:
向前输出 A、B、C、D、E、 向后输出 E - drw、D - drw、C - drw、B - drw、A - drw、X、