java解决方案:迭代器,它不知道是否有下一个元素
我编写了一个迭代器,它返回另一个给定的无向简单图的固定大小的子图。 它维护一个内部图,该图是当前计算的子图,并具有私有堆栈和列表,从中计算下一个子图
不可能知道迭代器是否可以返回另一个元素,因为当试图找到下一个子图时,算法可能会终止
在这个设计中,Java提供的next()
和hasNext()
模式不起作用。目前,我使用以下抽象方法编写了自己的界面BlindIterator:
/**
* @return True iff the current element is a valid return.
*/
public boolean hasCurrent();
/**
* @return Returns the current element, but does NOT generate the next element. This method can be called
* as often as wanted, without any side-effects.
*/
public T getCurrent();
/**Generates the next element, which can then be retrieved with getCurrent(). This method thus only provides
* this side-effect. If it is called while the current element is invalid, it may produce and exception,
* depending on the implementation on the iterator.
*/
public void generateNext();
这是一种常见的图案吗?有比我更好的设计吗
# 1 楼答案
实现迭代器来预加载/缓存下一个元素(子图)
例如,如果您的元素来自^{} ,其中唯一的方法是返回下一个元素的^{} 方法,或者} ,如下所示:
null
如果没有更多的元素可用,您将实现^{Answer by Joni有一个很好的
Iterator
实现,可以使用您想要的BlindIterator
作为元素的源既然你发明
BlindIterator
只是为了克服你所感知到的Iterator
的局限性,我建议你不要这样做。让迭代器实现直接调用底层的“生成”逻辑# 2 楼答案
我相信您所创建的相当于
Iterator
接口。下面是使用BlindIterator
实现Iterator
: