Я хочу сделать рекурсивный метод итеративным.
У меня есть список объектов, которые я хочу перебрать, а затем проверить их подобъекты.
Рекурсивный:
doFunction(Object)
while(iterator.hasNext())
{
//doStuff
doFunction(Object.subObjects);
}
Я хочу изменить это на что-то подобное
doFunction(Object)
iIterator = hashSet.iterator();
while(Iterator.hasNext()
{
//doStuff
hashSet.addAll(Object.subObjects);
}
Извините за плохой псевдо-код, но в основном я хочу перебрать подобъекты, добавляя новые объекты в конец списка для проверки.
Я мог бы сделать это, используя список, и сделать что-то вроде
while(list.size() > 0)
{
//doStuff
list.addAll(Object.subObjects);
}
Но я бы очень не хотел добавлять дубликаты субобъектов.
Конечно, я мог бы просто проверить, есть ли list.contains (каждый субобъект) перед тем, как добавить его.
Но я бы хотел использовать Набор для создания этого уборщика.
Таким образом, в принципе, есть ли возможность добавить к набору во время итерации по нему или есть более простой способ заставить List действовать как набор, а не проверять вручную .contains ()?
Любые комментарии приветствуются.
Спасибо