Есть ли разумный способ получить упорядоченный поток из списка (список массивов конкретно, но это не имеет значения), который передает элементы в обратном порядке, как они находятся в исходном списке?
Я ищу решение, которое не включает в себя буферизацию данных во всем (сборщик, другой список, массив и т.д., поскольку они копируют контейнер, который расточительно) или использует Collections.reverse
(поскольку он изменяет список).
До сих пор самые чистые способы, которые я вижу здесь, - реализовать мою собственную версию Spliterator
, которая ORDERED
и продвигается через список в обратном порядке, или реализовать Iterator
, который выполняет итерацию в обратном порядке, и использовать Spliterators.spliteratorUnknownSize(iterator,ORDERED)
на нем.
Обратите внимание, что этот вопрос отличается от обратного порядка потока Java 8: этот другой вопрос задает вопрос о том, как изменить поток (что невозможно в общем случае) и ответы предложите каким-то образом изменить исходный код (чего я не хочу делать), а затем поток, который изменил исходный код. Стоимость реверсирования источника - O (N), и я хочу вообще избежать его, если это возможно.