So invertieren Sie ein Array in Java

So kehren Sie ein Array in Java um

1. Überblick

In diesem kurzen Artikel zeigen wirhow we can invert an array in Java.

Wir werden verschiedene Möglichkeiten sehen, dies mit reinen Java 8-basierten Lösungen zu tun - einige davon mutieren ein vorhandenes Array und andere erstellen ein neues.

Als nächstes betrachten wir zwei Lösungen mit externen Bibliotheken - eine mitApache Commons Lang und eine mitGoogle Guava.

2. Das Problem definieren

Die Grundidee ist, die Reihenfolge der Elemente im Array umzukehren. Also, wenn das Array gegeben ist:

fruits = {"apples", "tomatoes", "bananas", "guavas", "pineapples"}

Wir möchten:

invertedFruits = {"pineapples", "guavas", "bananas", "tomatoes",  "apples"}

Lassen Sie uns einige Möglichkeiten sehen, wie wir das tun können.

3. Verwenden einer herkömmlichenfor-Schleife

Der erste Weg, ein Array zu invertieren, ist die Verwendung einerfor-Schleife:

void invertUsingFor(Object[] array) {
    for (int i = 0; i < array.length / 2; i++) {
        Object temp = array[i];
        array[i] = array[array.length - 1 - i];
        array[array.length - 1 - i] = temp;
    }
}

Wie wir sehen können, durchläuft der Code die Hälfte des Arrays und ändert die Elemente in symmetrischen Positionen.

Wir verwenden eine temporäre Variable, damit der Wert der aktuellen Position des Arrays während der Iteration nicht verloren geht.

4. Verwenden der Java 8Stream-API

Wir können ein Array auch mithilfe der Stream-API invertieren:

Object[] invertUsingStreams(Object[] array) {
    return IntStream.rangeClosed(1, array.length)
      .mapToObj(i -> array[array.length - i])
      .toArray();
}

Hier verwenden wir die MethodeIntStream.range, um einen sequentiellen Strom von Zahlen zu erzeugen. Dann ordnen wir diese Sequenz in absteigender Reihenfolge den Array-Indizes zu.

5. Verwenden vonCollections.reverse()

Lassen Sie uns sehen, wie Sie ein Array mit der MethodeCollections.reverse()invertieren:

public void invertUsingCollectionsReverse(Object[] array) {
    List list = Arrays.asList(array);
    Collections.reverse(list);
}


Im Vergleich zu den vorherigen Beispielen ist dies eine besser lesbare Methode, um die Aufgabe auszuführen.

6. Verwenden von Apache Commons Lang

Eine weitere Option zum Invertieren eines Arrays ist die Verwendung der BibliothekApache Commons Lang. Um es zu verwenden, müssen wir zuerst die Bibliothek als Abhängigkeit einbeziehen:


    org.apache.commons
    commons-lang3
    3.5

Die neueste Version vonCommons Lang finden Sie unterMaven Central.

Verwenden Sie die KlasseArrayUtils, um das Array zu invertieren:

public void invertUsingCommonsLang(Object[] array) {
    ArrayUtils.reverse(array);
}

Wie wir sehen können, ist diese Lösung recht einfach.

7. Verwendung von Google Guava

Eine weitere Option ist die Verwendung der BibliothekGoogle Guava. Genau wie bei denCommons Lang schließen wir die Bibliothek als Abhängigkeit ein:


    com.google.guava
    guava
    22.0

Die neueste Version finden Sie unterMaven Central.

Dann können wir diereverse-Methode in derGuava’sLists-Klasse verwenden, um das Array zu invertieren:

public Object[] invertUsingGuava(Object[] array) {
    List list = Arrays.asList(array);
    List reversed = Lists.reverse(list);
    return reversed.toArray();
}




8. Fazit

In diesem Artikel haben wir uns verschiedene Möglichkeiten angesehen, ein Array in Java zu invertieren. Wir haben einige Lösungen gezeigt, die nur Kern-Java verwenden, und zwei andere Lösungen, die Bibliotheken von Drittanbietern verwenden -Commons Lang undGuava.

Alle hier gezeigten Codebeispiele könnenfound on GitHub sein - dies ist ein Maven-Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.