Array Processing with Apache Commons Lang 3

1. Oversikt

Apache Commons Lang 3-biblioteket gir støtte for manipulering av kjerneklasser i Java API-ene. Denne støtten inkluderer metoder for håndtering av strenger, tall, datoer, samtidighet, objektrefleksjon og mer.

I denne raske opplæringen vil vi fokusere på matrisebehandling med det veldig nyttige ArrayUtils bruksklasse.

2. Maven avhengighet

For å bruke Commons Lang 3-biblioteket, er det bare å trekke det fra det sentrale Maven-arkivet ved å bruke følgende avhengighet:

 org.apache.commons commons-lang3 3.5 

Du finner den nyeste versjonen av dette biblioteket her.

3. ArrayUtils

De ArrayUtils klasse gir verktøymetoder for å jobbe med matriser. Disse metodene prøver å håndtere innspillene elegant ved å forhindre at et unntak blir kastet når en null verdien sendes inn.

Denne delen illustrerer noen metoder som er definert i ArrayUtils klasse. Merk at alle disse metodene kan fungere med alle elementtyper.

For enkelhets skyld er deres overbelastede smaker også definert for håndtering av matriser som inneholder primitive typer.

4. legge til og Legg til alle

De legge til metoden kopierer en gitt matrise og setter inn et gitt element på en gitt posisjon i den nye matrisen. Hvis posisjonen ikke er spesifisert, legges det nye elementet til på slutten av matrisen.

Følgende kodefragment setter inn tallet null i den første posisjonen til oldArray array og verifiserer resultatet:

int [] oldArray = {2, 3, 4, 5}; int [] newArray = ArrayUtils.add (oldArray, 0, 1); int [] expectArray = {1, 2, 3, 4, 5}; assertArrayEquals (forventetArray, newArray);

Hvis posisjonen ikke er spesifisert, legges det ekstra elementet til på slutten av oldArray:

int [] oldArray = {2, 3, 4, 5}; int [] newArray = ArrayUtils.add (oldArray, 1); int [] expectArray = {2, 3, 4, 5, 1}; assertArrayEquals (forventetArray, newArray);

De Legg til alle metoden legger til alle elementene på slutten av en gitt matrise. Følgende fragment illustrerer denne metoden og bekrefter resultatet:

int [] oldArray = {0, 1, 2}; int [] newArray = ArrayUtils.addAll (oldArray, 3, 4, 5); int [] expectArray = {0, 1, 2, 3, 4, 5}; assertArrayEquals (forventetArray, newArray);

5. fjerne og Fjern alle

De fjerne metoden fjerner et element på en spesifisert posisjon fra en gitt matrise. Alle påfølgende elementer flyttes til venstre. Merk at dette gjelder alle fjerningsoperasjoner.

Denne metoden returnerer en ny matrise i stedet for å gjøre endringer i den opprinnelige:

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.remove (oldArray, 1); int [] expectArray = {1, 3, 4, 5}; assertArrayEquals (forventetArray, newArray);

De Fjern alle metoden fjerner alle elementene på spesifiserte posisjoner fra en gitt matrise:

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.remAllAll (oldArray, 1, 3); int [] expectArray = {1, 3, 5}; assertArrayEquals (forventetArray, newArray);

6. removeElement og removeElements

De removeElement metoden fjerner den første forekomsten av et spesifisert element fra en gitt matrise.

I stedet for å kaste et unntak, blir fjerningsoperasjonen ignorert hvis et slikt element ikke eksisterer i den gitte matrisen:

int [] oldArray = {1, 2, 3, 3, 4}; int [] newArray = ArrayUtils.removeElement (oldArray, 3); int [] expectArray = {1, 2, 3, 4}; assertArrayEquals (forventetArray, newArray);

De removeElements metoden fjerner de første forekomster av spesifiserte elementer fra en gitt matrise.

I stedet for å kaste et unntak, ignoreres fjerningsoperasjonen hvis et spesifisert element ikke eksisterer i den gitte matrisen:

int [] oldArray = {1, 2, 3, 3, 4}; int [] newArray = ArrayUtils.removeElements (oldArray, 2, 3, 5); int [] expectArray = {1, 3, 4}; assertArrayEquals (forventetArray, newArray);

7. Den removeAllOccurences API

De removeAllOccurences metoden fjerner alle forekomster av det spesifiserte elementet fra den gitte matrisen.

I stedet for å kaste et unntak, blir fjerningsoperasjonen ignorert hvis et slikt element ikke eksisterer i den gitte matrisen:

int [] oldArray = {1, 2, 2, 2, 3}; int [] newArray = ArrayUtils.remAllOccurences (oldArray, 2); int [] expectArray = {1, 3}; assertArrayEquals (forventetArray, newArray);

8. Den inneholder API

De inneholder metoden sjekker om det finnes en verdi i en gitt matrise. Her er et kodeeksempel, inkludert bekreftelse av resultatet:

int [] array = {1, 3, 5, 7, 9}; boolsk evenContained = ArrayUtils.contains (array, 2); boolsk oddContained = ArrayUtils.contains (array, 7); assertEquals (false, evenContained); assertEquals (true, oddContained);

9. The omvendt API

De omvendt metoden reverserer elementrekkefølgen innenfor et spesifisert område for en gitt matrise. Denne metoden gjør endringer i den innleverte matrisen i stedet for å returnere en ny.

La oss ta en titt på et raskt:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.reverse (originalArray, 1, 4); int [] expectArray = {1, 4, 3, 2, 5}; assertArrayEquals (forventetArray, originalArray);

Hvis et område ikke er spesifisert, blir rekkefølgen på alle elementene omvendt:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.reverse (originalArray); int [] expectArray = {5, 4, 3, 2, 1}; assertArrayEquals (forventetArray, originalArray);

10. The skifte API

De skifte metoden skifter en rekke elementer i en gitt matrise et antall posisjoner. Denne metoden gjør endringer i den innleverte matrisen i stedet for å returnere en ny.

Følgende kodefragment skifter alle elementene mellom elementene i indeks 1 (inkludert) og indeks 4 (eksklusiv) en posisjon til høyre og bekrefter resultatet:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.shift (originalArray, 1, 4, 1); int [] expectArray = {1, 4, 2, 3, 5}; assertArrayEquals (forventetArray, originalArray);

Hvis områdegrensene ikke er spesifisert, forskyves alle elementene i matrisen:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.shift (originalArray, 1); int [] expectArray = {5, 1, 2, 3, 4}; assertArrayEquals (forventetArray, originalArray);

11. The undergruppe API

De undergruppe metoden oppretter en ny matrise som inneholder elementer innenfor et spesifisert område for den gitte matrisen. Følgende er et eksempel på en påstand om resultatet:

int [] oldArray = {1, 2, 3, 4, 5}; int [] newArray = ArrayUtils.subarray (oldArray, 2, 7); int [] expectArray = {3, 4, 5}; assertArrayEquals (forventetArray, newArray);

Legg merke til at når den overførte indeksen er større enn lengden på matrisen, blir den degradert til matriselengden i stedet for at metoden kaster et unntak. Tilsvarende, hvis en negativ indeks sendes inn, blir den fremmet til null.

12. The bytte API

De bytte metoden bytter en serie elementer på spesifiserte posisjoner i den gitte matrisen.

Følgende kodefragment bytter to grupper av elementer som starter ved indeksene 0 og 3, med hver gruppe som inneholder to elementer:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.swap (originalArray, 0, 3, 2); int [] expectArray = {4, 5, 3, 1, 2}; assertArrayEquals (forventetArray, originalArray);

Hvis det ikke sendes inn noe lengdegrunn, byttes bare ett element på hver posisjon:

int [] originalArray = {1, 2, 3, 4, 5}; ArrayUtils.swap (originalArray, 0, 3); int [] expectArray = {4, 2, 3, 1, 5}; assertArrayEquals (forventetArray, originalArray);

13. Konklusjon

Denne opplæringen introduserer kjernearray prosesseringsverktøyet i Apache Commons Lang 3 - ArrayUtils.

Som alltid kan implementeringen av alle eksemplene og kodebiter gitt ovenfor bli funnet i GitHub-prosjektet.


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