Рекурсивная функция для списка списков - PullRequest
3 голосов
/ 15 января 2020

У меня есть объект (типа «Потоки»), который содержит список типа «Потоки»

class Flows{
 String id;
 String sequence;
 List<Flows> listOfFlows;
}

Я хочу получить все элементы всех вложенных списков (может иметь любое количество вложенный список) в единый список. Как мы можем достичь этого с помощью рекурсии в java?

1 Ответ

7 голосов
/ 15 января 2020

Что-то вроде:

void flattenFlows(Flows flows, List<Flows> flowsList)
{
    flowsList.add(flows);
    for (Flows f: flows.listOfFlows) {
        flattenFlows(f, flowsList);
    }
}

flowsList - список, в который вы хотите добавить все потоки.

Редактировать: если возможно, чтобы поле списка было null (как указал один комментатор), добавьте проверку на null:

void flattenFlows(Flows flows, List<Flows> flowsList)
{
    flowsList.add(flows);
    if(flow.listOfFlows!=null) {
        for (Flows f: flows.listOfFlows) {
            flattenFlows(f, flowsList);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...