So kehren Sie ein Array in Java um

1. Übersicht

In diesem kurzen Artikel zeigen wir, wie wir ein Array in Java invertieren können.

Wir werden einige 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 werden zwei Lösungen mit externen Bibliotheken betrachtet - eine mit Apache Commons Lang und eine mit Google Guava .

2. Das Problem definieren

Die Grundidee besteht darin, 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"}

Mal sehen, wie wir das machen können.

3. Verwenden einer traditionellen for- Schleife

Der erste Weg, ein Array zu invertieren, ist die Verwendung einer for- 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 an symmetrischen Positionen.

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

4. Verwenden der Java 8 Stream- 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 Methode IntStream.range , um einen sequentiellen Zahlenstrom zu generieren. Dann ordnen wir diese Sequenz in absteigender Reihenfolge Array-Indizes zu.

5. Verwenden von Collections.reverse ()

Mal sehen, wie man ein Array mit der Collections.reverse () -Methode invertiert :

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 Apache Commons Lang- Bibliothek. Um es zu verwenden, müssen wir zuerst die Bibliothek als Abhängigkeit einschließen:

 org.apache.commons commons-lang3 3.5 

Die neueste Version von Commons Lang finden Sie bei Maven Central.

Verwenden wir die ArrayUtils- Klasse, 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. Verwenden von Google Guava

Eine weitere Option ist die Verwendung der Google Guava- Bibliothek. Genau wie beim Commons Lang werden wir die Bibliothek als Abhängigkeit einbeziehen:

 com.google.guava guava 22.0 

Die neueste Version finden Sie bei Maven Central.

Dann können wir die umgekehrte Methode in Guavas Lists- 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 verschiedene Möglichkeiten zum Invertieren eines Arrays in Java untersucht. Wir haben einige Lösungen gezeigt, die nur Kern-Java verwenden, und zwei andere Lösungen, die Bibliotheken von Drittanbietern verwenden - Commons Lang und Guava .

Alle hier gezeigten Codebeispiele finden Sie auf GitHub - dies ist ein Maven-Projekt, daher sollte es einfach zu importieren und auszuführen sein, wie es ist.