CodeGym/Blog Java/Aleatoriu/Java Stack 101: Aprofundarea în clasa Stack
John Squirrels
Nivel
San Francisco

Java Stack 101: Aprofundarea în clasa Stack

Publicat în grup
Stiva în Java este o structură de date, la fel ca o coadă, o matrice, o listă legată sau un arbore . Unde diferă de celelalte este că Java Stack se bazează pe principiul Last In, First Out (LIFO). Ceea ce înseamnă aceasta este că atunci când utilizați cele două comenzi pentru a adăuga și elimina un element din stivă, primul pe care îl eliminați va fi întotdeauna ultimul pe care l-ați adăugat. Să aruncăm o privire mai atentă asupra clasei Java Stack

Explorarea clasei Java Stack

Clasa Java Stack este o extensie a clasei Vector , care ea însăși extinde clasa List . Deoarece vectorii sunt mutabili și pot crește și micșora odată cu cerințele elementelor din interior, stack -urile pot, de asemenea, modifica dimensiunile la cerere. Extensia clasei Vector adaugă cinci operații care transformă un Vector într-o Stivă . Aceste cinci operațiuni sunt:
  • .push(E item) – plasează un element în partea de sus a stivei
  • .pop() – elimină elementul din partea de sus a stivei și îl returnează ca valoare a funcției
  • .peek() – se uită la elementul din partea de sus a stivei fără a-l elimina
  • .empty() – Funcție booleană pentru a testa dacă stiva este goală sau nu. Returnează 0 sau 1.
  • .search(Object o) – Caută o și returnează poziția acestuia. Valoarea este bazată pe 1, nu pe baza 0
Stack moștenește, de asemenea, toate metodele care fac parte din Vector , inclusiv, dar fără a se limita la, toString() , contains() , indexOf() și lastElement() . Java Stack 101: Aprofundarea în clasa Stack - 1

Codarea unui exemplu de stivă Java

Acum că știm funcțiile pentru stiva , să codificăm un exemplu de stivă java. Stack -urile sunt foarte utile pentru manipularea datelor care trebuie stocate temporar și recuperate rapid. Deoarece Stack -ul este LIFO, este extrem de util pentru parcurgerea nodurilor atunci când explorați o structură de date arborescentă. Înainte de a intra în toate acestea, să creăm o stivă de bază. Codul pentru implementarea unei stive este următorul:
import java.util.*;

class Main {
  public static void main(String[] args) {
    Stack<Integer> stackExample = new Stack<Integer>();
Asta este tot ce trebuie să faci pentru a crea o stivă goală . De asemenea, puteți să o declarați pur și simplu fără a declara un tip de date utilizând:
Stack example = new Stack();
Amintiți-vă că, deoarece stivele sunt modificabile, pe măsură ce împingem elementele pe stivă, se va ajusta automat în dimensiune. Acum să vedem cum să folosiți funcțiile Stack .

Implementarea stivei Java

Să vedem cum să folosim cele cinci metode pe care le-am explorat pe scurt mai devreme. Implementarea stivei Java este ușor de reținut dacă te gândești la ea ca la un teanc de plăci. Pune farfurii pe stivă, dar pentru a obține o farfurie, nu te duci în jos, iei una de sus. Ultimul pe care îl pui este primul pe care îl scoți. Extindem exemplul nostru anterior cu stackExample , funcțiile sunt după cum urmează:

Apăsaţi

// pushing integers onto the Stack
    stackExample.push(5);
    stackExample.push(10);
În acest moment, vom arăta celelalte funcții ca și cum am fi împins aceste două numere întregi în exemplul stivei Java de fiecare dată.

Pop

//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
Ieșire:
10
5

Este gol

Acum, să presupunem că doriți să eliminați toate elementele dintr-o stivă , dar nu sunteți sigur câte elemente există. Puteți combina funcția Boolean.isEmpty() cu o precondiție while bucla pentru a scoate toate elementele din Stivă . Uitați-vă la modul în care se realizează această implementare a stivei java.
while(!stackExample.isEmpty()) {
  System.out.println(stackExample.pop());
}
Ieșire
10
5

Arunca o privire

Putem folosi .peek() ca implementare a stivei în Java pentru a arunca o privire la următorul articol din stivă fără a-l elimina.
System.out.println(stackExample.peek());
Ieșire
10
Dacă deschidem și imprimăm Stack- ul , acesta va returna 10 și 5, deoarece 10 este încă pe stivă. Ne-am uitat doar la el, nu l-am eliminat cu funcția pop. Funcția peek este un instrument excelent pentru Stack -uri în java.

Căutare

Dacă vrem să găsim un element specific, implementarea stivelor în Java folosește .search(e); pentru a-l găsi.
System.out.println(stackExample.search(5));
Ieșire
2
Amintiți-vă că acest lucru se datorează faptului că numărăm din partea de sus a Stivei și Java Stack -urile încep la 1, nu la 0 ca un Array . Deci, privind stiva, este (10) --> (5), iar 5 este pe locul 2. Dacă încercați să găsiți un element care nu este în Stivă , veți obține un -1 ca rezultat.

Repetare

Când lucrați cu orice colecție, pot exista momente când trebuie să căutați mai multe elemente. Pentru a economisi complexitatea și a trebui să căutați prin stiva de mai multe ori, puteți utiliza iterația. Deoarece Stack în Java extinde clasa List , există mai multe opțiuni pentru iterare. Una dintre cele mai ușoare este să utilizați funcția ListIterator . ListIterator este frumos prin faptul că vă permite să traversați o stivă de sus în jos sau de jos în sus folosind .hasPrevious() sau .hasNext() . Iată cum arată:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());

  while (exampleIterator.hasPrevious()) {
    int iteration = exampleIterator.previous();
    System.out.println(iteration);
  }
Ieșire
10
5
Țineți minte că atunci când repetați prin Stack s în Java, nu eliminați niciun element din acesta. Iterarea vă permite în esență să aruncați o privire la fiecare element din stivă în ordine. Când faceți acest lucru, puteți căuta locații în care se află anumite elemente și apoi puteți să le treceți și să le manipulați. Le puteți număra, șterge sau chiar modifica dacă este necesar.
Comentarii
  • Popular
  • Nou
  • Vechi
Trebuie să fii conectat pentru a lăsa un comentariu
Această pagină nu are încă niciun comentariu