Klasa Java Stack proširuje klasu Vector. Omogućuje vam stvaranje novih elemenata, pregled elementa u nizu, ažuriranje elementa u nizu i brisanje svih elemenata iz niza. Skupovi obrađuju podatke redoslijedom prvi ušao zadnji izašao (FILO). To znači da možete dodavati ili uklanjati samo stavke s vrha hrpe.
Struktura podataka stog ima pet primarnih metoda. Međutim, klasa Java Stack također ima pristup više od 40 drugih metoda, koje nasljeđuje od klase Vector.
Stvaranje hrpe u Javi
Stack klasa ima jedan konstruktor koji vam omogućuje stvaranje praznog stoga. Svaki Stack ima argument vrste, koji diktira vrstu podataka koje će pohraniti.
uvoz java.util. Stog;
javnostrazredaGlavni{
javnoststatičkiponištitiglavni(String[] argumenti){
// kreiraj stog
StogKupci = novi Stog ();
}
}
Gornji kod stvara podatkovnu strukturu Stack tzv Kupci koji pohranjuje String vrijednosti.
Popunjavanje hrpe
Jedna od pet primarnih metoda klase Stack je gurnuti() metoda. Uzima jednu stavku koja ima isti tip podataka kao stog i gura tu stavku na vrh hrpe.
// popuni stog
Kupci.push("Jane Doe");
Kupci.push("John Doe");
Kupci.push("Patrick Williams");
Kupci.push("Paul Smith");
Kupci.push("Erick Rowe");
Kupci.push("Ella Jones");
Kupci.push("Jessica Brown");
Gornji kod popunjava hrpu kupaca sa sedam stavki. Svaku novu stavku gura na vrh hrpe. Dakle, stavka na vrhu gomile kupaca je Jessica Brown. I to možete potvrditi korištenjem Stacka zaviriti() metoda. The zaviriti() metoda ne uzima argumente. Vraća objekt na vrhu hrpe bez uklanjanja.
// pogled na objekt na vrhu hrpe
System.out.println (Customers.peek());
Gornji kod vraća konzoli sljedeći izlaz:
Jessica Brown
Pregledajte stavke u nizu
Struktura podataka snopa prilično je restriktivna u načinu na koji vam omogućuje interakciju s podacima. Stog biste uglavnom trebali koristiti preko njegove najviše stavke. Međutim, također možete koristiti metode naslijeđene od klase Vector za pristup proizvoljnim elementima. Takve metode uključuju elementAt i removeElementAt.
Najlakši način da dobijete pregled sadržaja hrpe je da ga jednostavno ispišete. Proslijedite Stack objekt na System.out.println a Stackova metoda toString() proizvest će lijep sažetak:
// pregled svih elemenata niza
System.out.println (Kupci);
Gornji kod ispisuje sljedeći izlaz na konzolu:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Traženje pozicije stavke u nizu
Ako poznajete stavku u hrpi, možete identificirati njen indeksni položaj ili njen položaj u odnosu na vrh hrpe. The indexOf() metoda uzima stavku u stogu i vraća njen indeksni položaj. Imajte na umu da skup počinje indeksirati svoje stavke od nule.
// pronaći poziciju indeksa stavke
System.out.println (Customers.indexOf("Jane Doe"));
Gornji kod ispisuje sljedeći izlaz na konzolu:
0
The traži() metoda je jedna od primarnih metoda klase Stack. Vraća poziciju stavke u odnosu na vrh hrpe, gdje stavka na vrhu hrpe ima poziciju broj jedan.
System.out.println (Customers.search("Jane Doe"));
Gornji kod ispisuje sljedeći izlaz na konzolu:
7
Ako dobavljate traži() ili indexOf() metode sa stavkom koja nije u stogu, vratit će negativnu.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Gornji kod ispisuje sljedeći izlaz na konzolu:
-1
-1
Ažuriranje stavki u nizu
Možete manipulirati samo stavkom na vrhu hrpe. Dakle, ako želite ažurirati element koji nije na vrhu hrpe, morat ćete iskočiti sve stavke iznad njega. The pop() metoda je jedna od Stackovih primarnih metoda. The pop() metoda ne uzima argumente. Uklanja stavku na vrhu hrpe i vraća je.
// ažuriranje objekta
Kupci.pop();
Kupci.pop();
Kupci.push("Ella James");
Kupci.push("Jessica Brown");
System.out.println (Kupci);
Gornji kod ispisuje sljedeći izlaz na konzolu:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Kao što možete vidjeti iz rezultata, kod ažurira Ellino prezime u James. To uključuje proces koji iskače stavke iz hrpe dok ne dođete do ciljnog objekta. Zatim iskače ciljni objekt; ažurira ga; i gura ga, zajedno sa stavkama koje su bile na vrhu ciljne stavke, natrag na hrpu. Svaki put kada želite ažurirati stavku u svom nizu, morat ćete upotrijebiti program koji izvodi operacije poput ove gore.
Brisanje stavke s hrpe
Da biste izbrisali jednu stavku iz strukture podataka Stack, ponovno možete upotrijebiti metodu pop(). Ako stavka koju želite izbrisati nije na vrhu, možete iskakati stavke na vrhu dok ne dođete do željene.
Brisanje svih stavki u nizu
Za brisanje svih elemenata iz niza, možete koristiti a Java while petlja s metodom pop() za brisanje elemenata jedan po jedan. Međutim, učinkovitiji pristup je korištenje čisto() metoda. The čisto() metoda je ona koju klasa Stack nasljeđuje od klase Vector. Ne uzima nikakve argumente, ne vraća ništa, već jednostavno uklanja sve elemente unutar strukture podataka Stack.
// brisanje svih stavki u nizu
Kupci.očisti();
System.out.println (Customers.empty());
Gornji kod briše sve stavke u Customer Stacku. Zatim koristi prazan() metoda za provjeru je li hrpa prazna. The prazan() je još jedna primarna metoda Java Stack Class. Ne uzima argumente i vraća Booleovu vrijednost. Ova metoda vraća true ako je stog prazan i false u suprotnom.
Gornji kod ispisuje sljedeći izlaz na konzolu:
pravi
Praktične primjene za strukturu podataka stog
Stack struktura podataka je vrlo restriktivna. Ne pruža toliko fleksibilnosti u obradi podataka kao druge strukture podataka. Ovo postavlja pitanje: kada biste trebali koristiti strukturu podataka Stack?
Stack struktura podataka idealno odgovara aplikacijama koje zahtijevaju obradu podataka obrnutim redoslijedom. To uključuje:
- Aplikacija koja provjerava je li riječ palindrom.
- Aplikacija koja pretvara decimalne brojeve u binarne brojeve.
- Aplikacije koje korisnicima omogućuju poništavanje.
- Igre koje korisniku omogućuju povratak na prethodne poteze, poput partije šaha.