Fjernelse af et element fra en matrix i Java

1. Oversigt

I denne hurtige vejledning lærer vi om de forskellige måder, vi kan fjern et element fra et array i Java ved hjælp af Apache Commons Lang-biblioteket.

2. Maven

Lad os tilføje commons-lang3 afhængighed af vores projekt pom.xml fil:

 org.apache.commons commons-lang3 3.9 

3. Fjernelse af et element

Før vi kommer i gang, lad os se på, hvad der sker, når vi fjerner et element fra et array uden at bruge ArrayUtils klasse fra Apache Commons Lang-biblioteket.

I lyset af nedenstående array, lad os fjerne et element ved indeks 2:

En enkel måde at gøre dette på ville være at erstatte den værdi, der er gemt på indeks 2 med værdien gemt på indeks 3 indtil vi når slutningen af ​​arrayet:

Bemærk, at ved at fjerne elementet på ovenstående måde, arrayets størrelse ville forblive den samme og den værdi, der er gemt i det sidste indeks, ville være tom. Da arrays har en fast hukommelsesstørrelse tildelt under initialiseringenfjernelse af et element justerer ikke størrelsen på arrayet.

Lad os nu se på matrixrepræsentationen, når vi fjerner et element ved hjælp af fjerne metode fra ArrayUtils klasse fra Apache Commons Lang:

Som vi kan se, justeres arraystørrelsen her til 5, efter at elementet er fjernet. Det fjerne metoden opretter en helt ny matrix og kopierer alle værdier undtagen den værdi, der fjernes.

Det ArrayUtils klasse giver to måder at fjerne et element fra en matrix. Lad os se på disse næste.

4. Brug af indeks som input

Den første måde, hvorpå vi kan fjerne et element, er ved dets indeks med ArrayUtils # fjern:

public int [] removeAnElementWithAGivenIndex (int [] array, int index) {return ArrayUtils.remove (array, index); }

En anden variation er Fjern alt metode, som vi kan bruge til at fjerne flere elementer fra et array, givet deres indekser:

public int [] removeAllElementsWithGivenIndices (int [] array, int ... indices) {return ArrayUtils.removeAll (array, indices); }

5. Brug af element som input

Eller lad os sige, at vi ikke kender indekset over, hvad vi fjerner. I så fald kan vi levere det element, der skal fjernes ved hjælp af ArrayUtils # removeElement:

public int [] removeFirstOccurrenceOfGivenElement (int [] array, int element) {return ArrayUtils.removeElement (array, element); }

Her er en anden nyttig variation af denne metode ArrayUtils # removeElements, hvis der er mere end et element, som vi gerne vil fjerne:

public int [] removeAllGivenElements (int [] array, int ... elements) {return ArrayUtils.removeElements (array, elements); }

Nogle gange vil vi gerne fjerne alle forekomster af et givet element. Vi kan gøre det ved hjælp af ArrayUtils # removeAllOccurences:

public int [] removeAllOccurrencesOfAGivenElement (int [] array, int element) {return ArrayUtils.removeAllOccurences (array, element); }

6. Konklusion

I denne artikel så vi på de forskellige måder at fjerne et element / elementer fra en matrix ved hjælp af Apache Commons Lang-biblioteket.

Hvis du vil vide mere om edge cases, skal du tjekke kildekoden til denne tutorial og de relevante enhedstest, der er tilgængelige på GitHub.