3

Reversing an ordered stream

Does streaming an array and then reversing the order of the stream result in the overhead (e.g. like the necessity to fully stream the array first and then iterate on it backwards)?

Using a helper structure

final Object[] arr; // assume this is filled List<Integer> list = Arrays.asList(arr); Collections.reverse(list); list.stream(); 

Is the only way to circumvent overhead (e.g. like the creation of an additional List) to iterate over the array in reverse order?

2 Answers 2

3

Does streaming an array and then reversing the order of the stream result in the overhead

Yes.

Is the only way to circumvent overhead (e.g. like the creation of an additional List) to iterate over the array in reverse order?

Yes, do it with an IntStream:

IntStream.range(0, arr.length).mapToObj(i -> arr[arr.length-1-i]) 
Sign up to request clarification or add additional context in comments.

Comments

2

Java 21 adds the reversed method to List, which is a view of the original list in reversed order. This can be used in conjunction with Arrays.asList, which creates a List view of the array:

final Object[] arr; // assume this is filled Stream<Object> stream = Arrays.asList(arr).reversed().stream(); 

Both Arrays.asList and reversed are minimalistic wrapper views of the underlying array, and do not copy the array or otherwise have much overhead.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.