Типобезопасное выравнивание вложенных коллекций / структур в Java - PullRequest
10 голосов
/ 15 сентября 2011

Я хотел бы сгладить произвольные глубоко вложенные коллекции / структуры элементов некоторого типа T в Java, оптимально с

  • только с живым представлением, а не скопированной коллекцией;
  • не только для обработки коллекций, но и для итераторов, массивов T произвольной размерности, Iterable и всех этих структур, произвольно смешанных и вложенных;
  • статическая безопасность типов.

Есть ли библиотека Java, которая может это обрабатывать?


Гуава , кажется, обрабатывает только один уровень вложенности, то есть Collection<Collection<T>> --flatten -> Collection<T>.

lambdaj выглядит многообещающе: можно ли как-то объединить on(), asIterator() и flattenIterator() для достижения этой цели?Статически безопасным для типов образом?

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Гуава, вероятно, поддержит это в конечном итоге :

http://code.google.com/p/guava-libraries/issues/detail?id=174

(Это может быть проще всего прочитать снизу вверх, так как мышление об этом имеетнесколько раз за время жизни.)

1 голос
/ 15 сентября 2011

Не основанный ни на одном из вышеперечисленных, но, возможно, класс DeepIterator, созданный с помощью Collection, метод next () которого просматривает следующий объект, а если он является экземпляром Collection, затем помещает текущий итератор в стек и возвращается в этот объект.Итератор коллекции.

0 голосов
/ 15 сентября 2011

Я думаю, что это может помочь: Arrays.deepToString(myCollection.toArray())

...