2017-04-16 39 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

相關問題