Odstránenie prvého prvku poľa

1. Prehľad

V tomto návode pozrieme sa na to, ako odstrániť prvý prvok poľa.

Okrem toho tiež uvidíme, ako použitie dátových štruktúr z Java Collections Framework robí veci ešte ľahšími.

2. Pomocou Arrays.copyOfRange ()

Po prvé, odstránenie prvku z poľa nie je v Jave technicky možné. Citovať oficiálne dokumenty:

„Pole je kontajnerový objekt, ktorý obsahuje pevný počet hodnôt jedného typu. Dĺžka poľa sa stanoví, keď sa pole vytvorí. Po vytvorení je jeho dĺžka pevná. “

To znamená pokiaľ pracujeme s poľom priamo, jediné, čo môžeme urobiť, je vytvoriť nové pole menšej veľkosti, ktoré potom nebude obsahovať prvý prvok.

Našťastie JDK poskytuje pohodlnú statickú pomocnú funkciu, ktorú môžeme použiť, tzv Arrays.copyOfRange ():

Reťazec [] stringArray = {"foo", "bar", "baz"}; String [] modifiedArray = Arrays.copyOfRange (stringArray, 1, stringArray.length);

Upozorňujeme, že cena tejto operácie je O (n) pretože zakaždým vytvorí nové pole.

Toto je samozrejme ťažkopádny spôsob odstránenia prvku z poľa a ak takéto operácie robíte pravidelne, mohlo by byť rozumnejšie použiť namiesto toho Java Collection Framework.

3. Pomocou a Zoznam Implementácia

Aby sa zachovala zhruba rovnaká sémantika dátovej štruktúry (usporiadaná postupnosť prvkov prístupných indexom), má zmysel použiť implementáciu Zoznam rozhranie.

Dve najbežnejšie implementácie sú ArrayList a LinkedList.

Predpokladajme, že máme nasledujúce Zoznams:

Zoznam arrayList = nový ArrayList (); // vyplnenie zoznamu ArrayList linkedList = new LinkedList (); // vyplniť LinkedList

Pretože obe triedy implementujú rovnaké rozhranie, vzorový kód na odstránenie prvého prvku vyzerá rovnako:

arrayList.remove (0); linkedList.remove (0);

V prípade ArrayList, náklady na odstránenie sú O (n), zatiaľ čo LinkedList má náklady vo výške O (1).

To teraz neznamená, že by sme mali používať a LinkedList všade ako predvolené, pretože cena za získanie objektu je opačná. Cena volania dostať (i) je O (1) v prípade ArrayList a O (n) v prípade LinkedList.

4. Záver

Už sme videli, ako odstrániť prvý prvok poľa v Jave. Ďalej sme sa pozreli na to, ako dosiahnuť rovnaký výsledok pomocou Java Collections Framework.

Vzorový kód nájdete na GitHub.


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