2013-10-20 42 views
0

我正在做一個遍歷節點列表的迭代器方法(iterator(int index)),這個特定的方法將返回一個迭代器,其行爲方式是首先調用下一個方法()將給指標參數的值,這是我第一次迭代,所以任何幫助表示讚賞返回參數索引值的迭代器方法

private class DoublelinkedlistIterator implements Iterator<T> 
    { 
    private Node<T> p; 
    private boolean removeOK; 


    private DoublelinkedlistIterator() 
    { 
     p = head;   // p is first in the list 
    removeOK = false; 

    } 

    public boolean hasNext() 
    { 

     if(p.neste != null) 
     { 
      return true; 
     } 

     return false; 
    } 

    public T next() 
    { 

     Node<T> q = p; 

     p = p.next; // go to next 
     removeOK = true; 
     return q.value; // return current value 


    } 

    public void remove() // in the making 
    { 

    removeOK = false; 
    } 

    } // class DoublelinkedlistIterator 

    public Iterator<T> iterator() 
    { 
    return new DoublelinkedlistIterator(); 
    } 

    public Iterator<T> iterator(int index) // its this one I need help with 
    { 


    next(); 
    } 
+4

你準確的問題是什麼? –

回答

0

您應該簡單地創建一個迭代器和調用next,直到你正確索引:!

public Iterator<T> iterator(int index) { 
    Iterator<T> it = new DoublelinkedlistIterator(); 
    for (int i = 0; i < index && it.hasNext(); i++, it.next()); 
    return it; 
} 

請注意,如果index比列表長度多,迭代器不會指向任何元素,但會處於hasNext()返回false的狀態。

+0

謝謝,解決了! – comodeque