CodeGym/Java-blogg/Tilfeldig/Java Stack 101: Dykk inn i Stack Class
John Squirrels
Nivå
San Francisco

Java Stack 101: Dykk inn i Stack Class

Publisert i gruppen
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
Stack arver også alle metodene som er en del av Vector , inkludert, men ikke begrenset til, toString() , contains() , indexOf() og lastElement() . Java Stack 101: Dykke inn i Stack Class - 1

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.
Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå