Как объединить все элементы из вложенной коллекции Java в один список?
Дана сложная вложенная коллекция объектов, таких как:
Set<List<Map<String, List<Object>>>> complexNestedCollection;
Существует ли универсальный метод, чтобы сгладить это и получить единыйList
из всехObject
содержится внутри?
Несколько деталей:
Список не должен включать сами объекты коллекции или ключи карты - только значения на самом низком уровне.Он должен следовать тому же порядку, где это возможно - поэтому в этом примере элементы в списке будут в порядке, тогда как порядок карт / наборов будет зависеть от реализации.При желании можно исключить дубликатыОБНОВИТЬ: В идеале он должен обнаруживать / обрабатывать циклические ссылки на любом уровне, например,List<List<Object>>
где внешний список содержит себя в качестве члена. (Благодарим Адриана Ялошевского за упоминание об этом в комментариях ниже).Примечание. Фактический вариант использования - получить все строки изList<List<String>>
, что можно сделать достаточно легко с помощью двух циклов, но это заставило меня задуматься об общем случае.