Ta bort ett element från en array i Java

1. Översikt

I den här snabbhandboken lär vi oss om de olika sätten på vilka vi kan ta bort ett element från en matris i Java med hjälp av Apache Commons Lang-biblioteket.

2. Maven

Låt oss lägga till commons-lang3- beroendet i vårt projekts pom.xml- fil:

 org.apache.commons commons-lang3 3.9 

3. Ta bort ett element

Innan vi börjar, låt oss titta på vad som händer när vi tar bort ett element från en array utan att använda ArrayUtils- klassen från Apache Commons Lang-biblioteket.

Med tanke på matrisen nedan, låt oss ta bort ett element i index 2 :

Ett enkelt sätt att göra detta skulle vara att ersätta värdet som lagrats i index 2 med det värde som lagras i index 3 tills vi når slutet av arrayen:

Observera att genom att ta bort elementet på ovanstående sätt skulle storleken på matrisen förbli densamma och värdet som lagrades vid det senaste indexet skulle vara tomt. Eftersom matriser har en fast minnesstorlek som tilldelats under initialiseringen justerar inte storleken på matrisen om du tar bort ett element.

Låt oss nu titta på arrayrepresentationen när du tar bort ett element med borttagningsmetoden från ArrayUtils- klassen från Apache Commons Lang:

Som vi kan se justeras arraystorleken till 5 efter att elementet har tagits bort. Den bort metod skapar en helt ny array och kopierar alla värden utom för värdet tas bort.

Den ArrayUtils klass ger två sätt att ta bort ett element från en array. Låt oss titta på dessa nästa.

4. Använda index som inmatning

Det första sättet att ta bort ett element är genom dess index med ArrayUtils # remove :

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

En annan variant är removeAll- metoden, som vi kan använda för att ta bort flera element från en array, med tanke på deras index:

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

5. Använda Element som Input

Eller, låt oss säga att vi inte känner till indexet för vad vi tar bort. I så fall kan vi tillhandahålla elementet att ta bort med ArrayUtils # removeElement :

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

Här är en annan användbar variant av den här metoden ArrayUtils # removeElements , om det finns mer än ett element som vi vill ta bort:

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

Ibland vill vi ta bort alla förekomster av ett visst element. Vi kan göra det genom att använda ArrayUtils # removeAllOccurences :

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

6. Sammanfattning

I den här artikeln tittade vi på de olika sätten att ta bort ett element / element från en matris med hjälp av Apache Commons Lang-biblioteket.

För att lära dig mer om edge-fallen, kolla in källkoden för den här självstudien och de relevanta enhetstesterna som finns tillgängliga på GitHub.