Сплошное спряжение вложенных коллекций/структур в Java
Я хотел бы сгладить произвольные глубоко вложенные коллекции/структуры элементов некоторого типа T в Java, оптимально с помощью
- имеет только просмотр в реальном времени, а не скопированную коллекцию;
- не только обрабатывает коллекции, но и итераторы, массивы T произвольной размерности, итерации и все эти структуры произвольно смешанные и вложенные;
- статический тип безопасности.
Есть ли библиотека java, которая может справиться с этим?
Guava, похоже, обрабатывает только один уровень вложенности, т.е. Collection<Collection<T>>
--flatten → Collection<T>
.
lambdaj выглядит многообещающим: могу ли я каким-то образом объединить on()
, asIterator()
и flattenIterator()
, чтобы достичь этого? Статически безопасным способом?
Ответы
Ответ 1
Guava, вероятно, поддержит это в конечном итоге:
http://code.google.com/p/guava-libraries/issues/detail?id=174
(Проще всего было бы прочитать это снизу вверх, так как мышление на нем несколько раз переместилось за время его существования.)
Ответ 2
Не основывается ни на одном из вышеперечисленных, но, возможно, на классе DeepIterator, который создается с помощью Collection, метод next() которого смотрит на следующий объект, и если он является экземпляром Collection, то толкает текущий итератор на Stack и возвращает в это Итериальный сборщик.
Ответ 3
Я думаю, это может помочь: Arrays.deepToString(myCollection.toArray())