2012-03-18 60 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

您正在创建一个新的迭代器,每次都重新开始。