Třída Java Stack rozšiřuje třídu Vector. Umožňuje vytvářet nové prvky, zobrazovat prvek v zásobníku, aktualizovat prvek v zásobníku a odstraňovat všechny prvky ze zásobníku. Zásobníky zpracovávají data v pořadí první do posledního (FILO). To znamená, že položky můžete přidávat nebo odebírat pouze z horní části balíčku.

Struktura dat zásobníku má pět primárních metod. Třída Java Stack má však také přístup k více než 40 dalším metodám, které zdědí od třídy Vector.

Vytvoření zásobníku v Javě

Třída Stack má jeden konstruktor což vám umožní vytvořit prázdný zásobník. Každý zásobník má argument typu, který určuje typ dat, která bude ukládat.

import java.util. Zásobník;

veřejnosttřídaHlavní{
veřejnoststatickýprázdnotahlavní(Řetězec[] argumentů){
// vytvořit zásobník
Zásobník Zákazníci = Nový Zásobník();
}
}

Výše uvedený kód vytváří datovou strukturu zásobníku s názvem Zákazníci který ukládá hodnoty řetězce.

Vyplnění zásobníku

Jednou z pěti primárních metod třídy Stack je TLAČIT() metoda. Vezme jednu položku, která má stejný datový typ jako zásobník, a posune tuto položku na začátek zásobníku.

// naplnění zásobníku
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");

Výše uvedený kód naplní zásobník zákazníků sedmi položkami. Posouvá každou novou položku na vrchol zásobníku. Takže položka v horní části seznamu zákazníků je Jessica Brown. A můžete to potvrdit pomocí zásobníku nahlédnout () metoda. The nahlédnout () metoda nebere žádné argumenty. Vrátí objekt do horní části balíčku, aniž by jej odstranil.

// zobrazení objektu v horní části zásobníku
System.out.println (Customers.peek());

Výše uvedený kód vrátí následující výstup do konzole:

Jessica Brownová

Zobrazte položky v zásobníku

Struktura dat zásobníku je značně omezující ve způsobu, jakým umožňuje interakci s jejími daty. Zásobník byste měli používat hlavně prostřednictvím jeho nejvyšší položky. Pro přístup k libovolným prvkům však můžete také použít metody zděděné ze třídy Vector. Mezi takové metody patří elementAt a removeElementAt.

Nejjednodušší způsob, jak získat přehled o obsahu balíčku, je jednoduše jej vytisknout. Předejte objekt zásobníku System.out.println a metoda Stack's toString() vytvoří pěkné shrnutí:

// zobrazení všech prvků zásobníku
System.out.println (zákazníci);

Výše uvedený kód vytiskne do konzole následující výstup:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]

Hledání pozice položky v zásobníku

Pokud znáte položku v balíčku, můžete určit jeho pozici indexu nebo jeho polohu vzhledem k horní části balíčku. The indexOf() metoda vezme položku v zásobníku a vrátí její indexovou pozici. Pamatujte, že zásobník začíná indexovat své položky na nule.

// najít pozici indexu položky
System.out.println (Customers.indexOf("Jane Doe"));

Výše uvedený kód vytiskne do konzole následující výstup:

0

The Vyhledávání() metoda je jednou z primárních metod třídy Stack. Vrací pozici položky vzhledem k vrcholu zásobníku, kde položka na vrcholu zásobníku má pozici číslo jedna.

System.out.println (Customers.search("Jane Doe"));

Výše uvedený kód vytiskne do konzole následující výstup:

7

Pokud dodáte Vyhledávání() nebo indexOf() metody s položkou, která není v zásobníku, vrátí zápornou.

System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));

Výše uvedený kód vytiskne do konzole následující výstup:

-1
-1

Aktualizace položek v zásobníku

Manipulovat lze pouze s položkou v horní části balíčku. Pokud tedy chcete aktualizovat prvek, který není v horní části zásobníku, budete muset vytáhnout všechny položky nad ním. The pop() metoda je jednou z hlavních metod zásobníku. The pop() metoda nebere žádné argumenty. Odebere položku v horní části stohu a vrátí ji.

// aktualizuje objekt
Zákazníci.pop();
Zákazníci.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (zákazníci);

Výše uvedený kód vytiskne do konzole následující výstup:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]

Jak můžete vidět z výstupu, kód aktualizuje Ellino příjmení na James. Zahrnuje proces, který vytahuje položky ze zásobníku, dokud nedorazíte k cílovému objektu. Poté zobrazí cílový objekt; aktualizuje to; a zasune jej spolu s předměty, které byly na vrcholu cílového předmětu, zpět do zásobníku. Budete muset použít program, který provádí operace, jako je ten výše, pokaždé, když budete chtít aktualizovat položku ve vašem zásobníku.

Odstranění položky ze zásobníku

Chcete-li odstranit jednu položku z datové struktury zásobníku, můžete znovu použít metodu pop(). Pokud položka, kterou chcete odstranit, není nahoře, můžete položky vyskakovat nahoře, dokud nedosáhnete požadované položky.

Odstranění všech položek v zásobníku

Chcete-li odstranit všechny prvky ze zásobníku, můžete použít a smyčka Java while pomocí metody pop() k odstranění prvků jeden po druhém. Efektivnějším přístupem je však použití Průhledná() metoda. The Průhledná() metoda je metoda, kterou třída Stack zdědí od třídy Vector. Nebere žádné argumenty, nic nevrací, ale jednoduše odstraňuje všechny prvky v datové struktuře zásobníku.

// smazat všechny položky v zásobníku
Customers.clear();
System.out.println (Customers.empty());

Výše uvedený kód odstraní všechny položky v zásobníku zákazníků. Poté používá prázdný() způsob, jak zkontrolovat, zda je zásobník prázdný. The prázdný() je další primární metodou třídy Java Stack. Nepotřebuje žádné argumenty a vrací booleovskou hodnotu. Tato metoda vrací hodnotu true, pokud je zásobník prázdný, a v opačném případě vrací hodnotu false.

Výše uvedený kód vytiskne do konzole následující výstup:

skutečný

Praktické aplikace pro datovou strukturu zásobníku

Struktura dat zásobníku je velmi restriktivní. Neposkytuje takovou flexibilitu při zpracování dat jako jiné datové struktury. To vyvolává otázku: kdy byste měli použít datovou strukturu Stack?

Struktura dat Stack je ideální pro aplikace, které vyžadují zpracování dat v opačném pořadí. Tyto zahrnují:

  • Aplikace, která kontroluje, zda je slovo palindrom.
  • Aplikace, která převádí desítková čísla na binární čísla.
  • Aplikace, které uživatelům umožňují vrátit zpět.
  • Hry, které uživateli umožňují vrátit se k předchozím tahům, jako je šachová partie.