我正在制作通过节点列表的迭代器方法(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();
}
答案 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
的状态。