Java: итератор должен всегда возвращать один и тот же объект, но должен менять его между вызовами next () - PullRequest
0 голосов
/ 01 апреля 2020

Итератор, который я пишу, должен перебирать все связанные подграфы фиксированного размера другого данного графа.

Поскольку все эти подграфы очень похожи (только незначительные изменения в алгоритме на основе дерева поиска), я не хочу создавать новый объект для возврата при каждом вызове next() из-за проблем во время выполнения.
Поэтому у меня есть объект subGraph, который возвращается каждый раз, но изменяется функцией update() между вызовами next(), так что объект работает как представление текущего состояния дерева поиска .

Как оптимально написать этот итератор, если я хочу, чтобы subGraph оставался неизменным до следующего вызова next()?
Насколько я понимаю, мне нужно будет использовать update() внутри hasNext() чтобы узнать, будет ли действительной следующая модификация subGraph. Но это как побочный эффект изменит то, что вы ранее получили от next(), а это не то, как hasNext() должен работать.

Является ли идея итератора, который всегда возвращает один и тот же объект, неудачным выбором дизайна, или я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...