2017-04-16 38 views
0

我使用迭代器的ArrayList为:如何使用ListIterator?

List<String> 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<String> li = al.listIterator(al.size()); 
    while(li.hasPrevious()) { 
     System.out.println(li.previous()+" "); 
    } 

我不知道是否有一些泛型的概念,但不清楚它的含义。 请清除Iterator和ListIterator的概念。 为什么ListIterator的一个语句正在工作其他人不?

回答

6

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

第二个从头开始,因此有以前的元素。

就这么简单。

+0

你很快:/ – sschrass

0

当您使用:

ListIterator<String> li = al.listIterator(al.size()); 

您致电:

ListIterator<E> List.listIterator(int index) 

返回在此列表中的元素的列表迭代器(以正确的顺序),开始在指定的位置名单。

它基本上启动列表迭代器在列表的末尾,并与hasPrevious()一起工作。

-

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

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

有关更多信息,请参阅Java doc here

相关问题