Clasa Java Stack extinde clasa Vector. Vă permite să creați elemente noi, să vizualizați un element din stivă, să actualizați un element din stivă și să ștergeți toate elementele din stivă. Stivele procesează datele într-o ordine FILO (primul întrat, ultimul ieşit). Aceasta înseamnă că puteți adăuga sau elimina doar articole din partea de sus a unei stive.

Structura de date a stivei are cinci metode principale. Cu toate acestea, clasa Java Stack are acces și la peste 40 de alte metode, pe care le moștenește din clasa Vector.

Crearea unei stive în Java

Clasa Stack are un singur constructor care vă permite să creați o stivă goală. Fiecare stivă are un argument de tip, care dictează tipul de date pe care le va stoca.

import java.util. Grămadă;

publicclasăPrincipal{
publicstaticgolprincipal(Șir[] argumente){
// creează o stivă
Grămadă Clienții = nou Grămadă();
}
}

Codul de mai sus creează o structură de date Stack numită Clienți care stochează valorile String.

Popularea unei stive

Una dintre cele cinci metode principale ale clasei Stack este

instagram viewer
Apăsaţi() metodă. Este nevoie de un singur articol care are același tip de date ca și stiva și împinge acel element în partea de sus a stivei.

// populează o stivă
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”);

Codul de mai sus populează Stack-ul clienților cu șapte articole. Împinge fiecare articol nou în partea de sus a Stivei. Deci, articolul din partea de sus a stivei de clienți este Jessica Brown. Și puteți confirma acest lucru folosind Stack arunca o privire() metodă. The arunca o privire() metoda nu ia argumente. Returnează obiectul din partea de sus a Stivei fără a-l îndepărta.

// vizualizați obiectul în partea de sus a unei stive
System.out.println (Customers.peek());

Codul de mai sus returnează următoarea ieșire la consolă:

Jessica Brown

Vizualizați articolele dintr-o stivă

Structura datelor stivei este destul de restrictivă în ceea ce privește modul în care vă permite să interacționați cu datele sale. Ar trebui să utilizați în principal o stivă prin elementul său cel mai de sus. Cu toate acestea, puteți folosi și metode moștenite din clasa Vector pentru a accesa elemente arbitrare. Astfel de metode includ elementAt și removeElementAt.

Cel mai simplu mod de a obține o imagine de ansamblu asupra conținutului unui Stack este pur și simplu să îl imprimați. Transmite un obiect Stack către System.out.println iar metoda toString() a Stivei va produce un rezumat frumos:

// vizualiza toate elementele unei stive
System.out.println (Clienți);

Codul de mai sus imprimă următoarea ieșire pe consolă:

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

Căutarea unei poziții de articol într-o stivă

Dacă cunoașteți un articol din stivă, puteți identifica poziția sa de index sau poziția în raport cu partea de sus a stivei. The Index de() metoda preia un element din stivă și returnează poziția sa de index. Rețineți că o stivă începe să-și indexeze articolele la zero.

// găsiți o poziție de index al articolului
System.out.println (Customers.indexOf ("Jane Doe"));

Codul de mai sus imprimă următoarea ieșire pe consolă:

0

The căutare() metoda este una dintre metodele principale ale clasei Stack. Returnează o poziție a articolului în raport cu partea de sus a stivei, unde articolul din partea de sus a stivei are poziția numărul unu.

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

Codul de mai sus imprimă următoarea ieșire pe consolă:

7

Dacă furnizați căutare() sau Index de() metode cu un articol care nu este în stivă, acestea vor returna unul negativ.

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

Codul de mai sus imprimă următoarea ieșire pe consolă:

-1
-1

Actualizarea articolelor dintr-o stivă

Puteți manipula doar un element din partea de sus a unei stive. Deci, dacă doriți să actualizați un element care nu se află în partea de sus a stivei, va trebui să puneți toate elementele deasupra acestuia. The pop() metoda este una dintre metodele principale ale Stivei. The pop() metoda nu ia argumente. Îndepărtează elementul din partea de sus a stivei și îl returnează.

// actualizează un obiect
Clienti.pop();
Clienti.pop();
Customers.push("Ella James");
Customers.push(„Jessica Brown”);
System.out.println (Clienți);

Codul de mai sus imprimă următoarea ieșire pe consolă:

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

După cum puteți vedea din rezultat, codul actualizează numele de familie al Ella la James. Implica un proces care scoate articole din stivă până când ajungeți la obiectul țintă. Apoi deschide obiectul țintă; îl actualizează; și îl împinge, împreună cu articolele care erau deasupra obiectului țintă, înapoi în stivă. Va trebui să utilizați un program care efectuează operațiuni ca cel de mai sus, de fiecare dată când doriți să actualizați un articol din Stack.

Ștergerea unui articol dintr-o stivă

Pentru a șterge un singur articol din structura de date Stack, puteți utiliza din nou metoda pop(). Dacă elementul pe care doriți să îl ștergeți nu se află în partea de sus, puteți deschide elementele în partea de sus până când ajungeți la cel dorit.

Ștergerea tuturor elementelor dintr-o stivă

Pentru a șterge toate elementele dintr-o stivă, puteți folosi a Java while bucla cu metoda pop() pentru a șterge elementele pe rând. O abordare mai eficientă, totuși, este utilizarea clar() metodă. The clar() metoda este una pe care clasa Stack o moștenește din clasa Vector. Nu ia argumente, nu returnează nimic, ci pur și simplu elimină toate elementele din structura de date Stack.

// șterge toate elementele dintr-o stivă
Clienți.clear();
System.out.println (Clienți.empty());

Codul de mai sus șterge toate articolele din Stiva Clienți. Apoi folosește gol() metoda de a verifica dacă Stiva este goală. The gol() este o altă metodă principală a clasei Java Stack. Nu ia argumente și returnează o valoare booleană. Această metodă returnează true dacă stiva este goală și fals în caz contrar.

Codul de mai sus imprimă următoarea ieșire pe consolă:

Adevărat

Aplicații practice pentru structura de date stiva

Structura de date Stack este foarte restrictivă. Nu oferă la fel de multă flexibilitate în procesarea datelor ca alte structuri de date. Aceasta ridică întrebarea: când ar trebui să utilizați structura de date Stack?

Structura de date Stack este ideală pentru aplicațiile care necesită procesarea datelor în ordine inversă. Acestea includ:

  • O aplicație care verifică dacă un cuvânt este un palindrom.
  • O aplicație care convertește numere zecimale în numere binare.
  • Aplicații care permit utilizatorilor să anuleze.
  • Jocuri care permit unui utilizator să revină la mișcările anterioare, cum ar fi un joc de șah.