Stacken i Java er en datastruktur, omtrent som en kø, matrise, koblet liste eller tre . Der den skiller seg fra de andre er at Java Stack er basert på Last In, First Out (LIFO)-prinsippet. Hva dette betyr er at når du bruker de to kommandoene til å legge til og fjerne et element fra stabelen, vil den første du fjerner alltid være den siste du la til. La oss se nærmere på Java Stack Class
Utforske Java Stack Class
Java Stack Class er en utvidelse av Vector- klassen, som selv utvider List- klassen. Fordi vektorer er mutbare og kan vokse og krympe med kravene til elementene inni, kan Stack s også endre størrelse på forespørsel. Utvidelsen av Vector -klassen legger til fem operasjoner som transformerer en Vector til en Stack . Disse fem operasjonene er:- .push(E element) – plasserer et element på toppen av stabelen
- .pop() – fjerner elementet øverst i stabelen og returnerer det som verdien av funksjonen
- .peek() – ser på elementet øverst i stabelen uten å fjerne det
- .empty() – boolsk funksjon for å teste om stabelen er tom eller ikke. Returnerer 0 eller 1.
- .search(Objekt o) – Ser etter o og returnerer posisjonen. Verdien er 1-basert, ikke 0-basert

Eksempel på koding av en Java Stack
Nå som vi kjenner funksjonene for Stack , la oss kode et java-stack-eksempel. Stack -er er svært nyttige for å håndtere data som må lagres midlertidig og hentes raskt. Fordi stakken er LIFO, er den usedvanlig nyttig for node-gjennomgang når du utforsker en tredatastruktur. Før vi kommer inn på alt dette, la oss lage en grunnleggende stack. Koden for å implementere en stack er som følger:
import java.util.*;
class Main {
public static void main(String[] args) {
Stack<Integer> stackExample = new Stack<Integer>();
Det er alt du trenger å gjøre for å lage en tom stabel . Du kan også bare deklarere det uten å deklarere en datatype ved å bruke:
Stack example = new Stack();
Husk at fordi stabel -er kan endres, vil den automatisk justere størrelsen når vi skyver elementer inn på stabelen. La oss nå se på hvordan du bruker Stack -funksjonene.
Java Stack Implementering
La oss se på hvordan du bruker de fem metodene vi undersøkte kort tidligere. Java stackimplementering er lett å huske hvis du tenker på det som en stabel med plater. Du legger tallerkener på stabelen, men for å få en tallerken, går du ikke til bunnen, du får en fra toppen. Den siste du tar på deg er den første du tar av. For å utvide vårt forrige eksempel med stackExample , er funksjonene som følger:Trykk
// pushing integers onto the Stack
stackExample.push(5);
stackExample.push(10);
På dette tidspunktet skal vi vise de andre funksjonene som om vi har presset disse to heltallene inn på Java-stabeleksemplet hver gang.
Pop
//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
Produksjon:
10
5
Er tom
La oss nå si at du vil fjerne alle elementene fra en stabel , men du er ikke sikker på hvor mange elementer det er. Du kan kombinere Boolean.isEmpty() -funksjonen med en precondition while loop for å åpne alle elementene fra Stack . Se på hvordan denne java stack-implementeringen gjøres.
while(!stackExample.isEmpty()) {
System.out.println(stackExample.pop());
}
Produksjon
10
5
Kikk
Vi kan bruke .peek() som stackimplementering i Java for å ta en titt på neste element på Stacken uten å fjerne det.
System.out.println(stackExample.peek());
Produksjon
10
Hvis vi spretter og skriver ut stabelen , vil den returnere 10 og 5 fordi 10-en fortsatt er på stabelen. Vi så bare på det, vi fjernet det ikke med pop-funksjonen. Peek-funksjonen er et flott verktøy for Stack s i java.
Søk
Hvis vi ønsker å finne et spesifikt element, bruker stackimplementeringen i Java .search(e); å finne den.
System.out.println(stackExample.search(5));
Produksjon
2
Husk at dette er fordi vi teller fra toppen av stabelen og Java -stakken starter på 1, ikke 0 som en matrise . Så, ser på stabelen, er den (10) --> (5), og 5 er på nummer 2-plassen. Hvis du prøver å finne et element som ikke er i Stack , vil du få en -1 som utdata.
Iterering
Når du arbeider med en samling, kan det være tider når du trenger å se etter flere elementer. For å spare kompleksitet og måtte søke gjennom stabelen flere ganger, kan du bruke iterasjon. Fordi Stack in Java utvider List -klassen, er det flere alternativer for iterering. En av de enkleste er å bare bruke ListIterator- funksjonen. ListIterator er fin ved at den lar deg krysse en stabel fra topp til bunn eller fra bunn til topp ved å bruke .hasPrevious() eller .hasNext() . Slik ser det ut:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());
while (exampleIterator.hasPrevious()) {
int iteration = exampleIterator.previous();
System.out.println(iteration);
}
Produksjon
10
5
Husk at når du itererer gjennom Stack s i Java, fjerner du ingen elementer i den. Iterering lar deg i hovedsak kikke på hvert element i stabelen i rekkefølge. Når du gjør dette, kan du se etter steder der visse elementer er og deretter gå gjennom og manipulere dem. Du kan telle, slette eller til og med endre dem om nødvendig.
GO TO FULL VERSION