Odstránenie prvku z poľa v Jave
1. Prehľad
V tomto rýchlom výučbe sa dozvieme o rôznych spôsoboch, akými môžeme odstrániť prvok z poľa v Jave pomocou knižnice Apache Commons Lang.
2. Maven
Pridajme commons-lang3 závislosť od nášho projektu pom.xml spis:
org.apache.commons commons-lang3 3.9
3. Odstránenie prvku
Než začneme, pozrime sa, čo sa stane, keď odstránime prvok z poľa bez použitia znaku ArrayUtils triedy z knižnice Apache Commons Lang.
Vzhľadom na nižšie uvedené pole odstránime prvok na index 2:
Jednoduchým spôsobom by bolo nahradiť hodnotu uloženú v index 2 s hodnotou uloženou v index 3 kým sa nedostaneme na koniec poľa:
Upozorňujeme, že odstránením prvku vyššie uvedeným spôsobom veľkosť poľa by zostala rovnaká a hodnota uložená pri poslednom indexe by bola prázdna. Pretože polia majú a pevná veľkosť pamäte pridelená počas inicializácie, odstránením prvku sa neprispôsobí veľkosť poľa.
Teraz sa pozrime na reprezentáciu poľa pri odstraňovaní prvku pomocou znaku odstrániť metóda z ArrayUtils trieda od Apache Commons Lang:
Ako vidíme, veľkosť poľa sa tu upraví na 5 po odstránení prvku. The odstrániť metóda vytvorí úplne nové pole a skopíruje všetky hodnoty okrem odstránenej hodnoty.
The ArrayUtils trieda poskytuje dva spôsoby odstránenia prvku z poľa. Pozrime sa na tieto ďalej.
4. Použitie indexu ako vstupu
Prvý spôsob, ako môžeme prvok odstrániť, je jeho index s ArrayUtils # odstrániť:
public int [] removeAnElementWithAGivenIndex (int [] pole, int index) {return ArrayUtils.remove (pole, index); }
Ďalšou variáciou je odobrať všetky metóda, ktorú môžeme použiť na odstránenie viacerých prvkov z poľa, vzhľadom na ich indexy:
public int [] removeAllElementsWithGivenIndices (int [] pole, int ... indexy) {return ArrayUtils.removeAll (pole, indexy); }
5. Použitie prvku ako vstupu
Alebo, povedzme, že nepoznáme index toho, čo odstraňujeme. V takom prípade môžeme poskytnúť prvok na odstránenie pomocou ArrayUtils # removeElement:
public int [] removeFirstOccurrenceOfGivenElement (int [] pole, int element) {return ArrayUtils.removeElement (pole, element); }
Tu uvádzame ďalšiu užitočnú variáciu tejto metódy ArrayUtils # removeElements, v prípade, že existuje viac ako jeden prvok, ktorý by sme chceli odstrániť:
public int [] removeAllGivenElements (int [] pole, int ... prvky) {return ArrayUtils.removeElements (pole, prvky); }
Niekedy by sme chceli odstrániť všetky výskyty daného prvku. Môžeme tak urobiť pomocou ArrayUtils # removeAllOccurences:
public int [] removeAllOccurrencesOfAGivenElement (int [] pole, int element) {return ArrayUtils.removeAllOccurences (pole, element); }
6. Záver
V tomto článku sme sa pozreli na rôzne spôsoby odstránenia prvku / prvkov z poľa pomocou knižnice Apache Commons Lang.
Ak sa chcete dozvedieť viac informácií o okrajových prípadoch, prečítajte si zdrojový kód tohto tutoriálu a príslušné testy jednotiek dostupné na GitHub.