如何使用ListIterator?

我正在使用ArrayList的iterator:

List al = new ArrayList(); // ----- Logic for adding elements----- Iterator it = al.iterator(); // logic to retrieve elements---- 

然后它尝试使用ListIterator,就像这样。

 ListIterator li = al.listIterator(); while(li.hasNext()) { System.out.print(li.next()+" "); } 

有效 …

我试过这个用于反向检索

 ListIterator li = al.listIterator(); while(li.hasPrevious()) { System.out.print(li.previous()+" "); } 

但它不起作用。

以下代码正常运行。

 ListIterator li = al.listIterator(al.size()); while(li.hasPrevious()) { System.out.println(li.previous()+" "); } 

我想知道有一些generics的概念,但不清楚它。 请清除Iterator和ListIterator的概念。 为什么ListIterator的一个语句不能正常工作?

第一个从列表的开头开始,因此没有任何先前的元素。

第二个从结束开始,因此具有先前的元素。

就这么简单。

当你使用时:

 ListIterator li = al.listIterator(al.size()); 

你在打电话:

 ListIterator List.listIterator(int index) 

从列表中的指定位置开始,返回列表中元素的列表迭代器(按正确顺序)。

它基本上是在列表末尾开始列表迭代器,并且与hasPrevious()一起工作。

但是使用ListIterator li = al.listIterator(); 你从头开始迭代,它没有前一个元素。

我建议使用IDE并设置调试点来评估条件。

有关详细信息,请参阅Java doc。