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