Я хочу сделать рекурсивный метод итеративным.
У меня есть список объектов, которые я хочу перебрать, а затем проверить их подобъекты.
Рекурсивный:
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(каждый подобъект), прежде чем добавлять его.
Но я хотел бы использовать Set для достижения этой цели.
Итак, в принципе, есть ли способ добавить к набору во время его итерации, или есть более простой способ заставить список действовать как набор, а не проверять вручную .contains()?
Любые комментарии приветствуются.
Спасибо