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