Trieda Java Stack rozširuje triedu Vector. Umožňuje vám vytvárať nové prvky, zobraziť prvok v zásobníku, aktualizovať prvok v zásobníku a odstrániť všetky prvky zo zásobníka. Zásobníky spracovávajú údaje v poradí prvý na posledný (FILO). To znamená, že položky môžete pridávať alebo odoberať iba z hornej časti stohu.
Dátová štruktúra zásobníka má päť primárnych metód. Trieda Java Stack má však prístup aj k viac ako 40 ďalším metódam, ktoré zdedí z triedy Vector.
Vytvorenie zásobníka v jazyku Java
Trieda Stack má jeden konštruktor čo vám umožní vytvoriť prázdny zásobník. Každý zásobník má argument typu, ktorý určuje typ údajov, ktoré bude uchovávať.
importovať java.util. Stoh;
verejnostitriedaHlavné{
verejnostistatickéneplatnéhlavné(Reťazec[] argumentov){
// vytvorte zásobník
StohZákazníci = Nový Stoh ();
}
}
Vyššie uvedený kód vytvára dátovú štruktúru zásobníka s názvom zákazníkov ktorý ukladá hodnoty reťazca.
Naplnenie zásobníka
Jednou z piatich primárnych metód triedy Stack je TLAČIŤ() metóda. Zoberie jednu položku, ktorá má rovnaký typ údajov ako zásobník, a posunie túto položku na vrch zásobníka.
// naplniť zásobník
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Customers.push("Paul Smith");
Customers.push("Erick Rowe");
Customers.push("Ella Jones");
Customers.push("Jessica Brown");
Vyššie uvedený kód naplní zásobník zákazníkov siedmimi položkami. Vytlačí každú novú položku na vrch zásobníka. Položka v hornej časti zoznamu zákazníkov je teda Jessica Brown. A môžete to potvrdiť pomocou zásobníka nahliadnuť () metóda. The nahliadnuť () metóda neberie žiadne argumenty. Vracia objekt na vrch zásobníka bez toho, aby ho odstránil.
// zobrazenie objektu v hornej časti zásobníka
System.out.println (Customers.peek());
Vyššie uvedený kód vráti do konzoly nasledujúci výstup:
Jessica Brownová
Zobraziť položky v zásobníku
Dátová štruktúra zásobníka je dosť obmedzujúca v tom, ako vám umožňuje interakciu s jej údajmi. Zásobník by ste mali používať hlavne prostredníctvom jeho najvyššej položky. Na prístup k ľubovoľným prvkom však môžete použiť aj metódy zdedené z triedy Vector. Takéto metódy zahŕňajú elementAt a removeElementAt.
Najjednoduchší spôsob, ako získať prehľad o obsahu zásobníka, je jednoducho ho vytlačiť. Odovzdajte objekt zásobníka System.out.println a metóda Stack's toString() vytvorí pekné zhrnutie:
// zobrazenie všetkých prvkov zásobníka
System.out.println (Zákazníci);
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Hľadanie pozície položky v zásobníku
Ak poznáte položku v zásobníku, môžete identifikovať jej indexovú pozíciu alebo jej polohu vzhľadom k hornej časti zásobníka. The indexOf() metóda vezme položku v zásobníku a vráti jej indexovú pozíciu. Majte na pamäti, že zásobník začína indexovať svoje položky na nule.
// nájdenie pozície indexu položky
System.out.println (Customers.indexOf("Jane Doe"));
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
0
The Vyhľadávanie() metóda je jednou z hlavných metód triedy Stack. Vracia pozíciu položky vzhľadom k hornej časti zásobníka, pričom položka v hornej časti zásobníka má pozíciu číslo jedna.
System.out.println (Customers.search("Jane Doe"));
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
7
Ak dodáte Vyhľadávanie() alebo indexOf() metódy s položkou, ktorá nie je v zásobníku, vrátia zápornú.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
-1
-1
Aktualizácia položiek v zásobníku
Môžete manipulovať iba s položkou v hornej časti zásobníka. Ak teda chcete aktualizovať prvok, ktorý nie je v hornej časti zásobníka, budete musieť vybrať všetky položky nad ním. The pop() metóda je jednou z hlavných metód zásobníka. The pop() metóda neberie žiadne argumenty. Odstráni položku v hornej časti stohu a vráti ju.
// aktualizuje objekt
Zákazníci.pop();
Zákazníci.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Zákazníci);
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Ako môžete vidieť z výstupu, kód aktualizuje Ellino priezvisko na James. Zahŕňa proces, ktorý vyberá položky zo zásobníka, až kým neprídete k cieľovému objektu. Potom zobrazí cieľový objekt; aktualizuje ho; a zatlačí ju spolu s položkami, ktoré boli na vrchu cieľovej položky, späť do zásobníka. Vždy, keď budete chcieť aktualizovať položku vo svojom zásobníku, budete musieť použiť program, ktorý vykonáva operácie podobné tomu vyššie.
Odstránenie položky zo zásobníka
Na vymazanie jednej položky z dátovej štruktúry Stack môžete opäť použiť metódu pop(). Ak položka, ktorú chcete odstrániť, nie je navrchu, môžete položky vyskakovať hore, kým nedosiahnete požadovanú položku.
Odstránenie všetkých položiek v zásobníku
Ak chcete odstrániť všetky prvky zo zásobníka, môžete použiť a Slučka Java while pomocou metódy pop() na odstránenie prvkov jeden po druhom. Efektívnejším prístupom je však použitie jasný() metóda. The jasný() metóda je metóda, ktorú trieda Stack zdedí od triedy Vector. Neberie žiadne argumenty, nič nevracia, ale jednoducho odstraňuje všetky prvky v dátovej štruktúre zásobníka.
// vymazať všetky položky v zásobníku
Customers.clear();
System.out.println (Customers.empty());
Vyššie uvedený kód odstráni všetky položky v zásobníku zákazníkov. Potom použije prázdne () spôsob, ako skontrolovať, či je zásobník prázdny. The prázdne () je ďalšou primárnou metódou triedy Java Stack. Nepotrebuje žiadne argumenty a vracia boolovskú hodnotu. Táto metóda vráti hodnotu true, ak je zásobník prázdny, a v opačnom prípade vráti hodnotu false.
Vyššie uvedený kód vypíše do konzoly nasledujúci výstup:
pravda
Praktické aplikácie pre dátovú štruktúru zásobníka
Dátová štruktúra zásobníka je veľmi obmedzujúca. Neposkytuje takú flexibilitu pri spracovaní dát ako iné dátové štruktúry. To vyvoláva otázku: kedy by ste mali použiť dátovú štruktúru zásobníka?
Dátová štruktúra Stack je ideálna pre aplikácie, ktoré vyžadujú spracovanie údajov v opačnom poradí. Tie obsahujú:
- Aplikácia, ktorá kontroluje, či je slovo palindróm.
- Aplikácia, ktorá konvertuje desatinné čísla na binárne čísla.
- Aplikácie, ktoré používateľom umožňujú vrátiť späť.
- Hry, ktoré umožňujú používateľovi vrátiť sa k predchádzajúcim ťahom, ako je napríklad šachová hra.