Hogyan lehet megfordítani egy tömböt a Java-ban

1. Áttekintés

Ebben a gyors cikkben megmutatjuk hogyan invertálhatunk egy tömböt Java-ban.

Néhány különféle módszert fogunk látni ennek megvalósítására tiszta Java 8-alapú megoldások használatával - ezek egy része meglévő tömböt mutat, más pedig újat hoz létre.

Ezután két megoldást fogunk megvizsgálni külső könyvtárak használatával - egyet használva Apache Commons Lang és egy használ Google Guava.

2. A probléma meghatározása

Az alapgondolat a tömb elemeinek sorrendjének megfordítása. Tehát, ha megadjuk a tömböt:

gyümölcs = {"alma", "paradicsom", "banán", "guava", "ananász"}

Szeretnénk beszerezni:

invertedFruits = {"ananász", "guava", "banán", "paradicsom", "alma"}

Nézzük meg, hogyan tehetjük meg ezt.

3. Hagyományos használata mert Hurok

A tömb inverziójára első lépésként az a használatával kerülhet sor mert hurok:

void invertUsingFor (Object [] tömb) {for (int i = 0; i <tömb.hossz / 2; i ++) {Object temp = tömb [i]; tömb [i] = tömb [tömb.hossz - 1 - i]; tömb [tömb.hossz - 1 - i] = temp; }}

Mint láthatjuk, a kód a tömb felén keresztül ismétlődik, szimmetrikus helyzetben megváltoztatja az elemeket.

Ideiglenes változót használunk, hogy az iteráció során ne veszítsük el a tömb aktuális helyzetének értékét.

4. A Java 8 használata Folyam API

Tömböt invertálhatunk a Stream API használatával is:

Object [] invertUsingStreams (Object [] tömb) {return IntStream.rangeClosed (1, tömb.hossz) .mapToObj (i -> tömb [tömb.hossz - i]) .toArray (); }

Itt a módszert alkalmazzuk IntStream.range hogy szekvenciális számfolyamot generáljon. Ezután ezt a sorrendet tömbindexekbe rendezzük csökkenő sorrendben.

5. Használata Collections.reverse ()

Nézzük meg, hogyan invertálhatunk egy tömböt a Collections.reverse () módszer:

public void invertUsingCollectionsReverse (Object [] tömb) {List list = Tömbök.asList (tömb); Gyűjtemények.fordítva (lista); }

Az előző példákkal összehasonlítva ez a feladat könnyebben olvasható módja.

6. Az Apache Commons Lang használata

A tömb invertálásának másik lehetősége a Apache Commons Lang könyvtár. Használatához először be kell foglalnunk a könyvtárat függőségként:

 org.apache.commons commons-lang3 3.5 

A legfrissebb verziója Commons Lang megtalálható a Maven Central-nál.

Használjuk a ArrayUtils osztály a tömb megfordításához:

public void invertUsingCommonsLang (Object [] tömb) {ArrayUtils.reverse (tömb); }

Mint láthatjuk, ez a megoldás meglehetősen egyszerű.

7. A Google Guava használata

Még egy lehetőség a Google Guava könyvtár. Ahogy mi a Commons Lang, függőségként felvesszük a könyvtárat:

 com.google.guava guava 22.0 

A legújabb verzió a Maven Central oldalon található.

Ezután használhatjuk a fordított módszer ben Guava'sListák osztály a tömb megfordításához:

public Object [] invertUsingGuava (Object [] tömb) {Lista lista = Tömbök.asList (tömb); Lista megfordítva = Lists.reverse (lista); return reversed.toArray (); }

8. Következtetés

Ebben a cikkben több különböző módszert vizsgáltunk meg egy tömb Java-ba történő invertálására. Bemutattunk néhány megoldást, amely csak az alapvető Java-t használta, és két másik megoldást, amelyek harmadik féltől származó könyvtárakat használnak - Commons Lang és Gujávafa.

Az itt bemutatott összes kódminta megtalálható a GitHub-on - ez egy Maven-projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.