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.