Heim  >  Artikel  >  Java  >  Wie erstelle ich einen umgekehrten IntStream in Java?

Wie erstelle ich einen umgekehrten IntStream in Java?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 10:05:36871Durchsuche

How to Generate a Reversed IntStream in Java?

So kehren Sie einen Java-Stream um, um einen abnehmenden IntStream zu generieren

Das Umkehren eines Streams ist ein häufiger Vorgang beim Umgang mit Java 8-Streams. Hier untersuchen wir zwei Ansätze zum Umkehren eines Streams jeglicher Art und gehen insbesondere auf die Herausforderung ein, einen abnehmenden IntStream zu generieren.

Allgemeiner Ansatz: Umkehren eines Streams jeglicher Art

Um einen Stream unabhängig vom Elementtyp umzukehren, können zwei Techniken eingesetzt werden:

  1. Elemente in einem Array speichern: Bei dieser Methode wird der Stream dann in ein Array konvertiert die Elemente rückwärts lesen. Aufgrund des unbekannten Laufzeittyps der Stream-Elemente ist jedoch eine ungeprüfte Umwandlung erforderlich.
  2. Verwendung von Collectors: Dieser Ansatz sammelt die Stream-Elemente in einer umgekehrten Liste, beinhaltet jedoch häufige Einfügungen an der vor ArrayList-Objekten, was zu einem Kopieraufwand führt.

Spezifischer Ansatz: Generieren eines abnehmenden IntStreams

Das spezifische Problem der Generierung eines abnehmenden IntStreams kann mit angegangen werden die folgende benutzerdefinierte Methode:

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

Diese Technik vermeidet Boxing- und Sortiervorgänge, was zu effizienterem Code führt.

Zusätzliche Überlegungen

Eine vorherige Version dieser Antwort empfiehlt die Verwendung einer umgekehrten ArrayList. Aufgrund der Ineffizienz des Einfügens an der Vorderseite von ArrayList wurde es jedoch aktualisiert, um stattdessen eine ArrayDeque zu verwenden, die effiziente vordere Einfügungen unterstützt.

Die Ausgabe dieses Ansatzes ist eine Deque anstelle einer Liste, aber es kann problemlos in der jetzt umgekehrten Reihenfolge iteriert oder gestreamt werden.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen umgekehrten IntStream in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn