带索引参数的链表java迭代器
hi LinkedList的普通迭代器如下所示,但是,我们如何构建一个迭代器来返回从指定索引开始的迭代器?我们如何建立:
public Iterator<E>iterator(int index)???
谢谢! 普通迭代器:
public Iterator<E> iterator( )
{
return new ListIterator();
}
private class ListIterator implements Iterator<E>
{
private Node current;
public ListIterator()
{
current = head; // head in the enclosing list
}
public boolean hasNext()
{
return current != null;
}
public E next()
{
E ret = current.item;
current = current.next;
return ret;
}
public void remove() { /* omitted because optional */ }
}
# 1 楼答案
你可以直接调用普通的
iterator()
方法,然后多次调用next()
:# 2 楼答案
这是如何实现这种
iterator
的开始示例,但也建议创建或扩展适当的interface
,并使此对象实现此interface
作为约定更新
根据评论,我为
LinkedList
写了一个迭代器因为
Iterator
是Anonymous class
的对象,所以我们不能使用constructor
,但可以在初始化块中初始化它。看看这个答案:https://stackoverflow.com/a/362463/947111我们在开始时遍历它一次(很抱歉C风格),所以它将指向currentObject
。所有代码都是自我解释的