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.