2012-03-18 104 views
1

我想對實現Iterable的類進行測試。當我去測試任何方法時,在itorator類中,像hasNext(),next()。所以當我打電話給list.itorator()。Next();沒有任何反應,節點是列表中的當前節點,而不是下一個節點。但是當我做ListIterator itrList = new ListIterator(list);它裏面的代碼起作用。我調用公共Iterator迭代器(){返回新的ListIterator(this); 那麼我沒有正確/抓握什麼? 感謝您的幫助。Junit實現了Iterable

public void test6() { 
    List<String> list = new List<String>(); 

    list.addAfterCurrent("1"); 
    list.addAfterCurrent("2"); 
    list.addAfterCurrent("3"); 
    ListIterator itrList = new ListIterator(list); 


    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(list.iterator().next()); // output is 1 
    TextIO.putln(itrList.next());   // output is 1 
    TextIO.putln(itrList.next());   // now output is 2   
    assertEquals("1", list.getCurrent()); 
    assertEquals(3, list.size()); 

} 

回答

7

您每次撥打list.iterator()時都會創建一個新的迭代器。您希望保留相同的迭代器並多次調用其next方法,例如

Iterator itr = list.iterator(); 
assertEquals(1, itr.next()); 
assertEquals(2, itr.next()); 
+0

非常感謝。 – Sloshy 2012-03-18 20:03:23

0

您正在創建一個新的迭代器,每次都重新開始。