Home > Java > javaTutorial > body text

How to Generate a Reversed IntStream in Java?

Barbara Streisand
Release: 2024-10-30 10:05:36
Original
947 people have browsed it

How to Generate a Reversed IntStream in Java?

How to Reverse a Java Stream to Generate a Decreasing IntStream

Reversing a stream is a common operation when dealing with Java 8 streams. Here, we explore two approaches to reverse a stream of any type, and specifically address the challenge of generating a decreasing IntStream.

General Approach: Reversing a Stream of Any Type

To reverse a stream regardless of the element type, two techniques can be employed:

  1. Storing Elements in an Array: This method involves converting the stream into an array, then reading the elements backwards. However, it requires an unchecked cast due to the unknown runtime type of the stream elements.
  2. Using Collectors: This approach accumulates the stream elements into a reversed list, but involves frequent insertions at the front of ArrayList objects, resulting in copying overhead.

Specific Approach: Generating a Decreasing IntStream

The specific issue of generating a decreasing IntStream can be addressed with the following custom method:

<code class="java">static IntStream revRange(int from, int to) {
    return IntStream.range(from, to)
                    .map(i -> to - i + from - 1);
}</code>
Copy after login

This technique avoids boxing and sorting operations, resulting in more efficient code.

Additional Considerations

A previous version of this answer recommended using a reversed ArrayList. However, due to the inefficiency of inserting at the front of ArrayList, it has been updated to use an ArrayDeque instead, which supports efficient front insertions.

The output of this approach is a Deque instead of a List, but it can be easily iterated or streamed in the now-reversed order.

The above is the detailed content of How to Generate a Reversed IntStream in Java?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template