title: How to get ordered stream from a list in reverse order in Java 8
body: <p>Is there a sane way to get an ordered stream from a list (array list specifically, but it shouldn't matter) that streams elements in reverse of how they are in the original list?</p>
  
  <p>I'm looking for a solution that doesn't involve buffering data in anything (collector, another list, array, etc, because they copy the container which is wasteful), or uses <code>Collections.reverse</code> (because it modifies the list).</p>
  
  <p>So far, the cleanest ways that I see here is to implement my own version of <code>Spliterator</code> that's <code>ORDERED</code> and advances through the list in reverse, or implement an <code>Iterator</code> that iterates in reverse, and use <code>Spliterators.spliteratorUnknownSize(iterator,ORDERED)</code> on it.</p>
  
  <p>Note this question is different from <a href="https://stackoverflow.com/questions/24010109/java-8-stream-reverse-order">Java 8 stream reverse order</a> : that other question asks on how to reverse a stream (which is impossible in general case), and answers offer to reverse the source somehow (which I don't want to do), and then stream that reversed source. The cost of reversing the source is O(N), and I want to avoid it at all if possible.</p>