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("\n向后输出");
while(iter.hasPrevious())
{
System.out.print(iter.previous()+"、");
}
结果为:
向前输出
A、B、C、D、E、
向后输出
E - drw、D - drw、C - drw、B - drw、A - drw、X、