Я написал итератор, который возвращает подграфы фиксированного размера другого заданного неориентированного простого графа. Он поддерживает внутренний граф, который является в настоящее время вычисляемым подграфом и имеет частные стеки и списки, из которых он вычисляет следующий подграф.
Невозможно узнать, может ли итератор вернуть другой элемент, потому что, возможно, алгоритм завершает работу при попытке найти следующий подграф.
В этом варианте шаблон next()
и hasNext()
, который Java предлагает, не работает. В настоящее время я написал свой собственный интерфейс 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();
Является ли это распространенным шаблоном и существуют ли лучшие проекты, чем мой?