Hoe een array in Java om te keren

1. Overzicht

In dit korte artikel laten we het zien hoe we een array in Java kunnen omkeren.

We zullen een paar verschillende manieren zien om dit te doen met pure Java 8-gebaseerde oplossingen - sommige daarvan muteren een bestaande array en andere creëren een nieuwe.

Vervolgens bekijken we twee oplossingen die externe bibliotheken gebruiken: een met Apache Commons Lang en een met Google Guava.

2. Het probleem definiëren

Het basisidee is om de volgorde van de elementen in de array om te keren. Dus, als de array wordt gegeven:

fruits = {"appels", "tomaten", "bananen", "guaves", "ananas"}

We willen graag:

invertedFruits = {"ananas", "guaves", "bananen", "tomaten", "appels"}

Laten we eens kijken hoe we dat kunnen doen.

3. Met behulp van een traditioneel voor Lus

De eerste manier waarop we zouden kunnen nadenken om een ​​array om te keren, is door een voor lus:

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; }}

Zoals we kunnen zien, itereert de code door de helft van de array en verandert de elementen in symmetrische posities.

We gebruiken een tijdelijke variabele zodat we de waarde van de huidige positie van de array tijdens de iteratie niet verliezen.

4. Java 8 gebruiken Stroom API

We kunnen ook een array omkeren met behulp van de Stream API:

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

Hier gebruiken we de methode IntStream.-bereik om een ​​opeenvolgende stroom getallen te genereren. Vervolgens brengen we deze reeks in aflopende volgorde in array-indexen in kaart.

5. Met behulp van Collections.reverse ()

Laten we eens kijken hoe we een array kunnen omkeren met de Collections.reverse () methode:

openbare ongeldige invertUsingCollectionsReverse (Object [] array) {List list = Arrays.asList (array); Collections.reverse (lijst); }

In vergelijking met de vorige voorbeelden is dit een beter leesbare manier om de taak uit te voeren.

6. Apache Commons Lang

Een andere optie om een ​​array om te keren, is door de Apache Commons Lang bibliotheek. Om het te gebruiken, moeten we eerst de bibliotheek als afhankelijkheid opnemen:

 org.apache.commons commons-lang3 3.5 

De nieuwste versie van Commons Lang is te vinden op Maven Central.

Laten we de ArrayUtils class om de array om te keren:

openbare ongeldige invertUsingCommonsLang (Object [] array) {ArrayUtils.reverse (array); }

Zoals we kunnen zien, is deze oplossing vrij eenvoudig.

7. Google Guava gebruiken

Een andere optie is om de Google Guava bibliotheek. Net zoals we deden met de Commons Lang, zullen we de bibliotheek als afhankelijkheid opnemen:

 com.google.guava guave 22.0 

De nieuwste versie is te vinden op Maven Central.

Vervolgens kunnen we de omgekeerde methode in Guava'sLijsten class om de array om te keren:

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

8. Conclusie

In dit artikel hebben we verschillende manieren bekeken om een ​​array in Java om te keren. We hebben een paar oplossingen laten zien die alleen kern-Java gebruiken en twee andere oplossingen die bibliotheken van derden gebruiken - Commons Lang en Guave.

Alle codevoorbeelden die hier worden getoond, zijn te vinden op GitHub - dit is een Maven-project, dus het moet gemakkelijk te importeren en uit te voeren zijn zoals het is.