返回参数索引值的迭代器方法

时间:2013-10-20 18:07:48

标签: java iterator

我正在制作通过节点列表的迭代器方法(iterator(int index)。这个特殊的方法将返回一个迭代器,其行为方式是首先调用方法next()将给出的值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();
  }

1 个答案:

答案 0 :(得分: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的状态。