For example:
List<Integer> list = Lists.newArrayList(3, 1, 2)
for(int i = list.size() - 1; i>=0; i--) {
    System.out.println(list.get(i));
}
How do I go about implementing the above code in Java8 Stream?
For example:
List<Integer> list = Lists.newArrayList(3, 1, 2)
for(int i = list.size() - 1; i>=0; i--) {
    System.out.println(list.get(i));
}
How do I go about implementing the above code in Java8 Stream?
 
    
    You can try the below piece of code -
ListIterator<Integer> iterator = list.listIterator(list.size());
Stream.generate(iterator::previous)
  .limit(list.size())
  .forEach(System.out::println);
 
    
    What if something like:
List<Integer> list = Arrays.asList(3, 1, 2);
    Collections.reverse(list);
    list.forEach(System.out::println);
 
    
    int[] array = {3, 1, 2};
IntStream.rangeClosed(1, array.length)
    .mapToObj(i -> array[array.length - i])
    .forEach(System.out::println);
 
    
    