Uklanjanje prvog elementa niza

1. Pregled

U ovom vodiču, pogledat ćemo kako ukloniti prvi element niza.

Osim toga, vidjet ćemo i kako korištenje struktura podataka iz Java Collections Framework-a olakšava stvari.

2. Korištenje Arrays.copyOfRange ()

Kao prvo, uklanjanje elementa niza tehnički nije moguće na Javi. Da citiramo službene dokumente:

„Niz je objekt kontejnera koji sadrži fiksni broj vrijednosti jednog tipa. Duljina niza utvrđuje se kada se niz kreira. Nakon stvaranja, njegova je duljina fiksna. "

To znači sve dok izravno radimo s nizom, sve što možemo je stvoriti novi niz manje veličine, koji tada ne sadrži prvi element.

Srećom JDK pruža prikladnu statičku pomoćnu funkciju koju možemo koristiti, tzv Arrays.copyOfRange ():

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

Imajte na umu da ova operacija košta Na) budući da će svaki put stvoriti novi niz.

Naravno, ovo je glomazan način uklanjanja elementa iz niza i ako redovito radite takve operacije, možda bi bilo razumnije koristiti Java Collections Framework.

3. Korištenje a Popis Provedba

Kako bi se zadržala približno ista semantika strukture podataka (uređeni slijed elemenata kojima se može pristupiti indeksom), ima smisla koristiti implementaciju Popis sučelje.

Dvije najčešće primjene su ArrayList i LinkedList.

Pretpostavimo da imamo sljedeće Popiss:

Popis arrayList = novi ArrayList (); // popuniti popis ArrayList linkedList = new LinkedList (); // popunjava LinkedList

Budući da obje klase implementiraju isto sučelje, primjer koda za uklanjanje prvog elementa izgleda jednako:

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

U slučaju ArrayList, trošak uklanjanja je Na), dok LinkedList ima cijenu od O (1).

To ne znači da bismo trebali koristiti znak LinkedList posvuda je zadana vrijednost, jer je cijena dohvaćanja predmeta obrnuta. Troškovi poziva dobiti (i) je O (1) u slučaju ArrayList i Na) u slučaju LinkedList.

4. Zaključak

Vidjeli smo kako ukloniti prvi element niza u Javi. Osim toga, pogledali smo kako postići isti rezultat koristeći Java Collections Framework.

Primjer koda možete pronaći na GitHubu.