Ako obrátiť pole v Jave

1. Prehľad

V tomto rýchlom článku si ukážeme ako môžeme invertovať pole v Jave.

Uvidíme niekoľko rôznych spôsobov, ako to dosiahnuť pomocou čistých riešení založených na prostredí Java 8 - niektoré mutujú existujúce pole a niektoré vytvárajú nové.

Ďalej sa pozrieme na dve riešenia využívajúce externé knižnice - jedno využívajúce Apache Commons Lang a jeden pomocou Google Guava.

2. Definovanie problému

Základnou myšlienkou je obrátiť poradie prvkov v poli. Ak je teda dané pole:

ovocie = {"jablká", "paradajky", "banány", "guavas", "ananás"}

Chceli by sme získať:

invertedFruits = {"ananás", "guavas", "banány", "paradajky", "jablká"}

Pozrime sa na niekoľko spôsobov, ako to môžeme urobiť.

3. Použitie tradičného pre Slučka

Prvý spôsob, ako by sme mohli uvažovať o invertovaní poľa, je použitie a pre slučka:

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

Ako vidíme, kód iteruje cez polovicu poľa a mení prvky v symetrických pozíciách.

Používame dočasnú premennú, aby sme počas iterácie nestratili hodnotu aktuálnej polohy poľa.

4. Používanie Java 8 Prúd API

Pole môžeme tiež invertovať pomocou Stream API:

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

Tu používame metódu IntStream.rozsah na generovanie postupného toku čísel. Potom túto postupnosť namapujeme do indexov polí v zostupnom poradí.

5. Používanie Collections.reverse ()

Pozrime sa, ako invertovať pole pomocou Collections.reverse () metóda:

public void invertUsingCollectionsReverse (pole Object []) {List list = Arrays.asList (pole); Zbierky.Reverzný (zoznam); }

V porovnaní s predchádzajúcimi príkladmi je to čitateľnejší spôsob vykonania úlohy.

6. Používanie Apache Commons Lang

Ďalšou možnosťou, ako invertovať pole, je použiť Apache Commons Lang knižnica. Aby sme ho mohli použiť, musíme najskôr zahrnúť knižnicu ako závislosť:

 org.apache.commons commons-lang3 3.5 

Najnovšia verzia servera Commons Lang nájdete v Maven Central.

Použime ArrayUtils triedy na invertovanie poľa:

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

Ako vidíme, toto riešenie je dosť jednoduché.

7. Používanie služby Google Guava

Ďalšou možnosťou je použiť Google Guava knižnica. Rovnako ako v prípade Commons Lang, zahrnieme knižnicu ako závislosť:

 com.google.guava guava 22.0 

Najnovšiu verziu nájdete v Maven Central.

Potom môžeme použiť obrátiť metóda v GuavaZoznamy triedy na invertovanie poľa:

public Object [] invertUsingGuava (Object [] pole) {List list = Arrays.asList (pole); Zoznam obrátený = Lists.reverse (zoznam); návrat obrátený.toArray (); }

8. Záver

V tomto článku sme sa zaoberali niekoľkými rôznymi spôsobmi, ako invertovať pole v Jave. Ukázali sme niekoľko riešení, ktoré používajú iba jadro Java a ďalšie dve riešenia, ktoré používajú knižnice tretích strán - Commons Lang a Guava.

Všetky tu zobrazené ukážky kódu nájdete na GitHub - toto je projekt Maven, takže by malo byť ľahké importovať a spustiť také, aké sú.


$config[zx-auto] not found$config[zx-overlay] not found