Java Stack klass laiendab Vector klassi. See võimaldab teil luua uusi elemente, vaadata elementi virnas, värskendada elementi virnas ja kustutada kõik elemendid virust. Virnab töötlemisandmeid FILO (first-in-last-out) järjekorras. See tähendab, et saate üksusi lisada või eemaldada ainult virna ülaosast.
Viru andmestruktuuril on viis peamist meetodit. Kuid Java Stacki klassil on juurdepääs ka enam kui 40 muule meetodile, mille see pärib Vector klassist.
Viru loomine Javas
Stack klass on üks konstruktor mis võimaldab teil luua tühja virna. Igal virnal on tüübi argument, mis määrab talletatavate andmete tüübi.
importida java.util. Virna;
avalikklassPeamine{
avalikstaatilinetühinepeamine(String[] args){
// loo virn
VirnaKliendid = uus Virna ();
}
}
Ülaltoodud kood loob virna andmestruktuuri nimega Kliendid mis salvestab stringi väärtused.
Virna täitmine
Üks Stack-klassi viiest peamisest meetodist on push () meetod. See võtab ühe üksuse, millel on virnaga sama andmetüüp, ja surub selle virna ülaossa.
// asustama virna
Kliendid.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Kliendid.push("Paul Smith");
Customers.push("Erick Rowe");
Kliendid.push("Ella Jones");
Kliendid.push("Jessica Brown");
Ülaltoodud kood täidab klientide virna seitsme üksusega. See lükkab iga uue üksuse virna ülaossa. Seega on klientide virna ülaosas olev üksus Jessica Brown. Ja saate seda kinnitada virna abil piiluma () meetod. The piiluma () meetod ei võta argumente. See tagastab virna ülaosas oleva objekti seda eemaldamata.
// objekti vaatamine virna ülaosas
System.out.println (Customers.peek());
Ülaltoodud kood tagastab konsoolile järgmise väljundi:
Jessica Brown
Vaadake üksusi virnas
Viru andmestruktuur on üsna piirav selles osas, kuidas see võimaldab teil oma andmetega suhelda. Peaksite kasutama virna peamiselt selle ülemise üksuse kaudu. Kuid suvalistele elementidele pääsemiseks saate kasutada ka klassist Vector päritud meetodeid. Sellised meetodid hõlmavad elementAt ja removeElementAt.
Lihtsaim viis virna sisust ülevaate saamiseks on see lihtsalt printida. Edastage virnaobjekt System.out.println ja Stacki meetod toString() annab kena kokkuvõtte:
// vaata kõiki viru elemente
System.out.println (kliendid);
Ülaltoodud kood prindib konsooli järgmise väljundi:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Kauba positsiooni otsimine virnas
Kui teate virnas mõnda üksust, saate tuvastada selle indekspositsiooni või positsiooni virna ülaosa suhtes. The indeks() meetod võtab virnas üksuse ja tagastab selle indekspositsiooni. Pidage meeles, et virn alustab oma üksuste indekseerimist nullist.
// üksuse indeksi positsiooni leidmine
System.out.println (Customers.indexOf("Jane Doe"));
Ülaltoodud kood prindib konsooli järgmise väljundi:
0
The otsing() meetod on üks Stack klassi peamisi meetodeid. See tagastab üksuse positsiooni virna ülaosa suhtes, kus virna ülaosas oleva üksuse positsioon on number üks.
System.out.println (Customers.search("Jane Doe"));
Ülaltoodud kood prindib konsooli järgmise väljundi:
7
Kui pakute otsing() või indeks() meetodid elemendiga, mida virnas pole, tagastavad nad negatiivse.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Ülaltoodud kood prindib konsooli järgmise väljundi:
-1
-1
Virnas olevate üksuste värskendamine
Saate manipuleerida ainult virna ülaosas oleva üksusega. Seega, kui soovite värskendada elementi, mis pole virna ülaosas, peate kõik üksused selle kohale hüppama. The pop() meetod on üks Stacki peamisi meetodeid. The pop() meetod ei võta argumente. See eemaldab virna ülaosas oleva üksuse ja tagastab selle.
// objekti värskendamine
Kliendid.pop();
Kliendid.pop();
Kliendid.push("Ella James");
Kliendid.push("Jessica Brown");
System.out.println (kliendid);
Ülaltoodud kood prindib konsooli järgmise väljundi:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Nagu väljundist näete, värskendab kood Ella perekonnanime Jamesiks. See hõlmab protsessi, mis tõstab üksused virnast välja, kuni jõuate sihtobjektini. Seejärel hüppab see sihtobjekti; värskendab seda; ja lükkab selle koos üksustega, mis olid sihtüksuse peal, tagasi virna. Peate kasutama programmi, mis sooritab ülaltoodud toiminguid, iga kord, kui soovite oma virnas mõnda üksust värskendada.
Üksuse kustutamine virnast
Ühe üksuse kustutamiseks virna andmestruktuurist saate uuesti kasutada meetodit pop(). Kui üksust, mida soovite kustutada, pole ülaosas, saate üksusi ülaosas poputada, kuni jõuate soovitud üksuseni.
Kõigi virnas olevate üksuste kustutamine
Kõigi elementide virnast kustutamiseks võite kasutada a Java while tsükkel pop() meetodiga elementide ükshaaval kustutamiseks. Tõhusam lähenemisviis on aga kasutada selge () meetod. The selge () meetod on selline, mille Stack klass pärib Vector klassist. See ei võta argumente, ei tagasta midagi, vaid lihtsalt eemaldab kõik virna andmestruktuuri elemendid.
// kustutada kõik virna üksused
Kliendid.selge();
System.out.println (Customers.empty());
Ülaltoodud kood kustutab kõik klientide virnas olevad üksused. Seejärel kasutab see tühi() meetod kontrollimaks, kas virn on tühi. The tühi() on Java pinuklassi teine peamine meetod. See ei võta argumente ja tagastab Boole'i väärtuse. See meetod tagastab tõene, kui virn on tühi, ja false muul juhul.
Ülaltoodud kood prindib konsooli järgmise väljundi:
tõsi
Virna andmestruktuuri praktilised rakendused
Stacki andmestruktuur on väga piirav. See ei paku andmetöötlusel nii palju paindlikkust kui teised andmestruktuurid. See tekitab küsimuse: millal peaksite kasutama Stacki andmestruktuuri?
Stack andmestruktuur sobib ideaalselt rakendustele, mis nõuavad andmete töötlemist vastupidises järjekorras. Need sisaldavad:
- Rakendus, mis kontrollib, kas sõna on palindroom.
- Rakendus, mis teisendab kümnendarvud kahendarvudeks.
- Rakendused, mis võimaldavad kasutajatel tühistada.
- Mängud, mis võimaldavad kasutajal naasta eelmiste käikude juurde, näiteks malemäng.