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